def test_expects_dict(self): dict_field = DictField() dict_field.validate({}) with pytest.raises(ConfigError): dict_field.validate("foo") with pytest.raises(ConfigError): dict_field.validate(42) with pytest.raises(ConfigError): dict_field.validate([])
def test_empty(self): dict_field = DictField() dict_field.validate({}) dict_field = DictField(allow_empty=False) with pytest.raises(ConfigError): dict_field.validate({})
def test_converts_basic_types(self): dict_field = DictField(value_type=str) assert isinstance(dict_field.value_type, StringField) dict_field = DictField(value_type=int) assert isinstance(dict_field.value_type, NumberField) assert dict_field.value_type.floats is False dict_field = DictField(value_type=float) assert isinstance(dict_field.value_type, NumberField) assert dict_field.value_type.floats is True dict_field = DictField(value_type=list) assert isinstance(dict_field.value_type, ListField) dict_field = DictField(value_type=dict) assert isinstance(dict_field.value_type, DictField) dict_field = DictField(value_type=Path) assert isinstance(dict_field.value_type, PathField)
def test_validates_valuess(self): dict_field = DictField() dict_field.validate({'foo': 42, 1: 'bar'}) dict_field = DictField(value_type=str) dict_field.validate({'foo': 'foo', 1: 'bar'}) with pytest.raises(ConfigError): dict_field.validate({'foo': 42, 1: 2}) dict_field = DictField(value_type=StringField(choices=['foo', 'bar'])) dict_field.validate({1: 'foo', 'bar': 'bar'}) with pytest.raises(ConfigError): dict_field.validate({1: 'foo', 2: 3}) with pytest.raises(ConfigError): dict_field.validate({1: 'foo', 2: 'baz'})
def test_validates_keys(self): dict_field = DictField() dict_field.validate({'foo': 42, 1: 'bar'}) dict_field = DictField(key_type=str) dict_field.validate({'foo': 42, 'bar': 'bar'}) with pytest.raises(ConfigError): dict_field.validate({'foo': 42, 1: 'bar'}) dict_field = DictField(key_type=StringField(choices=['foo', 'bar'])) dict_field.validate({'foo': 42, 'bar': 42}) with pytest.raises(ConfigError): dict_field.validate({'foo': 42, 1: 'bar'}) with pytest.raises(ConfigError): dict_field.validate({'foo': 42, 'baz': 42})