From 86fddf8e22b97ab4b57a1e33de1fe21c89c4af58 Mon Sep 17 00:00:00 2001 From: Facetoe Date: Tue, 9 Aug 2016 18:14:25 +0800 Subject: [PATCH] Add tests for required settings. --- tests/test_core_modules.py | 50 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/tests/test_core_modules.py b/tests/test_core_modules.py index 0ca7897..d3e7982 100644 --- a/tests/test_core_modules.py +++ b/tests/test_core_modules.py @@ -2,9 +2,9 @@ import time from unittest.mock import MagicMock import pytest - from i3pystatus import IntervalModule -from i3pystatus.core.modules import is_method_of +from i3pystatus.core.exceptions import ConfigMissingError +from i3pystatus.core.modules import is_method_of, Module left_click = 1 right_click = 3 @@ -145,3 +145,49 @@ def test_is_method_of(): assert not is_method_of(source_object.assigned_function, object) assert not is_method_of(source_object.member, object) assert not is_method_of(source_object.string_member, object) + + +def test_required_raises(): + """ Ensure undefined required settings raise a ConfigMissingError """ + + class TestRequired(Module): + settings = ( + ("some_setting",), + ) + required = ('some_setting',) + + with pytest.raises(ConfigMissingError): + TestRequired() + + TestRequired(some_setting='foo') + + +def test_required_defined_raises(): + """ Ensure defined but unmodified required settings raise a ConfigMissingError """ + + class TestRequiredDefined(Module): + settings = ( + ("some_setting",), + ) + required = ('some_setting',) + some_setting = None + + with pytest.raises(ConfigMissingError): + TestRequiredDefined() + + TestRequiredDefined(some_setting='foo') + + +def test_required_subclass_overide(): + """ Ensure required settings defined in subclasses do not raise a ConfigMissingError """ + + class TestRequiredDefined(Module): + settings = ( + ("some_setting",), + ) + required = ('some_setting',) + + class TestSubClass(TestRequiredDefined): + some_setting = 'foo' + + TestSubClass()