import pytest import core.widget import core.module import core.config class SampleModule(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 @pytest.fixture def widget_a(): return core.widget.Widget("some random value") #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 test_text_fulltext(): widget = core.widget.Widget(full_text="this is some value") assert widget.full_text() == "this is some value" def test_set_fulltext(widget_a): assert widget_a.full_text() != "new value" widget_a.full_text("new value") assert widget_a.full_text() == "new value" def test_callable_fulltext(mocker): callback = mocker.MagicMock(return_value="callback returns") widget = core.widget.Widget(full_text=callback) assert widget.full_text() == "callback returns" callback.assert_called_once_with(widget) def test_set_callable_fulltext(mocker, widget_a): callback = mocker.MagicMock(return_value="this is a test") widget_a.full_text(callback) assert widget_a.full_text() == "this is a test" callback.assert_called_once_with(widget_a) def test_state_defaults_to_empty(widget_a): assert widget_a.state() == [] def test_single_widget_state(widget_a): widget_a.set("state", "state1") assert widget_a.state() == ["state1"] def test_multiple_widget_states(widget_a): widget_a.set("state", ["state1", "state2"]) assert widget_a.state() == ["state1", "state2"] def test_widget_module_state(widget_a): module = SampleModule(widgets=widget_a) widget_a.set("state", ["state1", "state2"]) module.states = "x" assert widget_a.state() == ["state1", "state2", "x"] module.states = ["a", "b"] assert widget_a.state() == ["state1", "state2", "a", "b"] def test_multiple_widget_themes(): widget1 = core.widget.Widget(full_text="a") widget2 = core.widget.Widget(full_text="b") widget3 = core.widget.Widget(full_text="c") module = SampleModule(widgets=[widget1, widget2, widget3]) module.set("theme.test", "1,2,3") module.set("theme.test2", "x") assert widget1.theme("test") == "1" assert widget2.theme("test") == "2" assert widget3.theme("test") == "3" assert widget1.theme("test2") == "x" assert widget2.theme("test2") == None assert widget3.theme("test2") == None # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4