import unittest import unittest.mock import core.widget import core.module import core.config class TestModule(core.module.Module): def __init__(self, widgets, config=core.config.Config([]), theme=None): super().__init__(config, theme, widgets) self.states = [] def update(self): if self.fail: raise Exception(self.error) pass def state(self, widget): return self.states class widget(unittest.TestCase): def setUp(self): self.someValue = "some random value" self.someOtherValue = "some different value" self.callbackReturnValue = "callback return value" self.someWidget = core.widget.Widget(full_text=self.someValue) self.someCallback = unittest.mock.MagicMock( return_value=self.callbackReturnValue ) self.assertNotEqual(self.someValue, self.someOtherValue) def tearDown(self): pass def test_text_fulltext(self): newWidget = core.widget.Widget(full_text=self.someValue) self.assertEqual(self.someValue, newWidget.full_text()) def test_set_fulltext(self): self.assertNotEqual(self.someOtherValue, self.someWidget.full_text()) self.someWidget.full_text(self.someOtherValue) self.assertEqual(self.someOtherValue, self.someWidget.full_text()) def test_callable_fulltext(self): newWidget = core.widget.Widget(full_text=self.someCallback) self.assertEqual(newWidget.full_text(), self.callbackReturnValue) self.someCallback.assert_called_once_with(newWidget) def test_set_callable_fulltext(self): self.someWidget.full_text(self.someCallback) self.assertEqual(self.someWidget.full_text(), self.callbackReturnValue) self.someCallback.assert_called_once_with(self.someWidget) def test_state_defaults_to_empty(self): self.assertEqual([], self.someWidget.state()) def test_single_widget_state(self): self.someWidget.set("state", "state1") self.assertEqual(["state1"], self.someWidget.state()) def test_multiple_widget_states(self): self.someWidget.set("state", ["state1", "state2"]) self.assertEqual(["state1", "state2"], self.someWidget.state()) def test_widget_module_state(self): module = TestModule(widgets=self.someWidget) self.someWidget.set("state", ["state1", "state2"]) module.states = "x" self.assertEqual(["state1", "state2", "x"], self.someWidget.state()) module.states = ["a", "b"] self.assertEqual(["state1", "state2", "a", "b"], self.someWidget.state()) def test_multiple_widget_themes(self): widget1 = core.widget.Widget(full_text="a") widget2 = core.widget.Widget(full_text="b") widget3 = core.widget.Widget(full_text="c") module = TestModule(widgets=[widget1, widget2, widget3]) module.set("theme.test", "1,2,3") module.set("theme.test2", "x") self.assertEqual("1", widget1.theme("test")) self.assertEqual("2", widget2.theme("test")) self.assertEqual("3", widget3.theme("test")) self.assertEqual("x", widget1.theme("test2")) self.assertEqual(None, widget2.theme("test2")) self.assertEqual(None, widget3.theme("test2")) # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4