import pytest from unittest import TestCase, mock import core.config import core.widget import modules.core.cpu pytest.importorskip("psutil") def build_module(): config = core.config.Config([]) return modules.core.cpu.Module(config=config, theme=None) def cpu_widget(module): return module.widgets()[0] class TestCPU(TestCase): def test_load_module(self): __import__("modules.core.cpu") @mock.patch('psutil.cpu_percent') def test_cpu_percent(self, cpu_percent_mock): cpu_percent_mock.return_value = 5 module = build_module() assert cpu_widget(module).full_text() == '5.0%' @mock.patch('psutil.cpu_percent') def test_cpu_percent_update(self, cpu_percent_mock): cpu_percent_mock.return_value = 10 module = build_module() assert cpu_widget(module).full_text() == '10.0%' cpu_percent_mock.return_value = 20 module.update() assert cpu_widget(module).full_text() == '20.0%' @mock.patch('psutil.cpu_percent') def test_healthy_state(self, cpu_percent_mock): cpu_percent_mock.return_value = 50 module = build_module() assert module.state(None) == None @mock.patch('psutil.cpu_percent') def test_warning_state(self, cpu_percent_mock): cpu_percent_mock.return_value = 75 module = build_module() assert module.state(None) == 'warning' @mock.patch('psutil.cpu_percent') def test_critical_state(self, cpu_percent_mock): cpu_percent_mock.return_value = 82 module = build_module() assert module.state(None) == 'critical' @mock.patch('core.input.register') def test_register_left_mouse_action(self, input_register_mock): module = build_module() input_register_mock.assert_called_with( module, button=core.input.LEFT_MOUSE, cmd='gnome-system-monitor' )