From 2c8dafec701d80ddd9a3d1855a14a8eef0c44790 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thayn=C3=A3=20Moretti?= Date: Sat, 29 Aug 2020 20:17:39 -0300 Subject: [PATCH] Add Network Traffic module tests --- tests/modules/contrib/test_network_traffic.py | 54 +++++++++++++++++-- 1 file changed, 51 insertions(+), 3 deletions(-) diff --git a/tests/modules/contrib/test_network_traffic.py b/tests/modules/contrib/test_network_traffic.py index 0dd52a9..256aac1 100644 --- a/tests/modules/contrib/test_network_traffic.py +++ b/tests/modules/contrib/test_network_traffic.py @@ -1,9 +1,57 @@ import pytest +from unittest import TestCase, mock + +import core.config +import core.widget +import modules.contrib.network_traffic + +from types import SimpleNamespace pytest.importorskip("psutil") - pytest.importorskip("netifaces") -def test_load_module(): - __import__("modules.contrib.network_traffic") +def io_counters_mock(recv, sent): + return { + 'lo': SimpleNamespace( + bytes_sent = sent, + bytes_recv = recv + ) + } + +def gateways_response(): + return { + 'default': { + 1: ('10.0.0.10', 'lo') + } + } + +def build_module(): + return modules.contrib.network_traffic.Module(config=core.config.Config([]), theme=None) + +class TestNetworkTrafficUnit(TestCase): + def test_load_module(self): + __import__("modules.contrib.network_traffic") + + @mock.patch('psutil.net_io_counters') + @mock.patch('netifaces.gateways') + @mock.patch('netifaces.AF_INET', 1) + def test_update_rates(self, gateways_mock, net_io_counters_mock): + net_io_counters_mock.return_value = io_counters_mock(0, 0) + gateways_mock.return_value = gateways_response() + + module = build_module() + + net_io_counters_mock.return_value = io_counters_mock(2842135, 1932215) + module.update() + + assert module.widgets()[1].full_text() == '1.84MiB/s' + assert module.widgets()[0].full_text() == '2.71MiB/s' + + def test_initial_download_rate(self): + module = build_module() + assert module.widgets()[0].full_text() == '0.00B/s' + + def test_initial_upload_rate(self): + module = build_module() + assert module.widgets()[1].full_text() == '0.00B/s'