[tests] Add generic module tests

These tests check that all widgets of all modules conform to some basic
principles, at least.
This commit is contained in:
Tobi-wan Kenobi 2017-03-05 13:30:10 +01:00
parent f9984ba386
commit 826c568625
2 changed files with 51 additions and 2 deletions

View file

@ -53,9 +53,7 @@ class Module(bumblebee.engine.Module):
def __init__(self, engine, config): def __init__(self, engine, config):
widget = bumblebee.output.Widget(full_text=self.updates) widget = bumblebee.output.Widget(full_text=self.updates)
super(Module, self).__init__(engine, config, widget) super(Module, self).__init__(engine, config, widget)
self._next_check = 0 self._next_check = 0
widget
def updates(self, widget): def updates(self, widget):
result = [] result = []

51
tests/test_modules.py Normal file
View file

@ -0,0 +1,51 @@
# pylint: disable=C0103,C0111
import mock
import unittest
import importlib
import tests.mocks as mocks
from bumblebee.engine import all_modules
from bumblebee.output import Widget
from bumblebee.config import Config
class TestGenericModules(unittest.TestCase):
def setUp(self):
self.popen = mocks.MockPopen()
self.popen.mock.communicate.return_value = (str.encode("1"), "error")
self.popen.mock.returncode = 0
engine = mock.Mock()
engine.input = mock.Mock()
config = Config()
self.objects = {}
for mod in all_modules():
cls = importlib.import_module("bumblebee.modules.{}".format(mod["name"]))
self.objects[mod["name"]] = getattr(cls, "Module")(engine, {"config": config})
for widget in self.objects[mod["name"]].widgets():
self.assertEquals(widget.get("variable", None), None)
def tearDown(self):
self.popen.cleanup()
def test_widgets(self):
for mod in self.objects:
widgets = self.objects[mod].widgets()
for widget in widgets:
widget.link_module(self.objects[mod])
self.assertEquals(widget.module, mod)
self.assertTrue(isinstance(widget, Widget))
self.assertTrue(hasattr(widget, "full_text"))
widget.set("variable", "value")
self.assertEquals(widget.get("variable", None), "value")
self.assertTrue(isinstance(widget.full_text(), str) or isinstance(widget.full_text(), unicode))
def test_update(self):
for mod in self.objects:
widgets = self.objects[mod].widgets()
self.objects[mod].update(widgets)
self.test_widgets()
self.assertEquals(widgets, self.objects[mod].widgets())
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4