Source code for tests.unit_tests.config.core.test_config_item

import pytest

from yawning_titan.config.core import ConfigItem
from yawning_titan.config.item_types.bool_item import BoolItem, BoolProperties
from yawning_titan.config.item_types.float_item import FloatItem, FloatProperties
from yawning_titan.config.item_types.int_item import IntItem, IntProperties
from yawning_titan.config.item_types.str_item import StrItem, StrProperties


[docs]@pytest.mark.unit_test def test_to_dict(): """Test the ConfigItem can represent itself as a dictionary.""" item = ConfigItem(doc="test", value="test") assert item.to_dict() == {"value": "test", "doc": "test"}
[docs]@pytest.mark.unit_test def test_assignment(): """Test the ConfigItem calls validation on setting the value and that the value is updated.""" item = ConfigItem(doc="test", value="test", properties=StrProperties()) item.value = "changed" assert item.value == "changed" item.value = 1 assert not item.validation.passed
[docs]@pytest.mark.unit_test def test_set_value(): """Test the :method: `~yawning_titan.config.core.ConfigItem.set_value` method does not validate the item.""" item = ConfigItem(doc="test", value="test", properties=StrProperties()) item.set_value(1) assert item.validation.passed assert item.value == 1
[docs]@pytest.mark.unit_test @pytest.mark.parametrize( ("item", "properties"), ( (IntItem, BoolProperties), (BoolItem, IntProperties), (StrItem, FloatProperties), (FloatItem, StrProperties), ), ) def test_assign_incorrect_properties(item, properties): """Test item types raise an :class: `~yawning_titan.exceptions.TypeError` error when using incorrect property types.""" with pytest.raises(TypeError): item(value=None, properties=properties)