bumblebee-status/tests/core/test_widget.py
2020-06-20 14:53:44 +02:00

97 lines
3 KiB
Python

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