def test_clean_normal_dict(self): context = RenderContext(None, None, None, None) schema = ParamDType.Dict({ 'str': ParamDType.String(), 'int': ParamDType.Integer(), }) value = {'str': 'foo', 'int': 3} expected = dict(value) # no-op result = clean_value(schema, value, context) self.assertEqual(result, expected)
def test_map_parse(self): dtype = ParamDType.parse({ 'type': 'map', 'value_dtype': { 'type': 'dict', # test nesting 'properties': { 'foo': { 'type': 'string' }, }, }, }) self.assertEqual( repr(dtype), repr( ParamDType.Map(value_dtype=ParamDType.Dict( properties={ 'foo': ParamDType.String(), }))))
def test_param_schema_implicit(self): mv = ModuleVersion.create_or_replace_from_spec( { 'id_name': 'x', 'name': 'x', 'category': 'Clean', 'parameters': [ { 'id_name': 'foo', 'type': 'string', 'default': 'X' }, { 'id_name': 'bar', 'type': 'secret', 'name': 'Secret' }, { 'id_name': 'baz', 'type': 'menu', 'menu_items': 'a|b|c', 'default': 2 }, ] }, source_version_hash='1.0') self.assertEqual( repr(mv.param_schema), repr( ParamDType.Dict({ 'foo': ParamDType.String(default='X'), 'baz': ParamDType.Enum(choices={0, 1, 2}, default=2), })))
def test_param_schema_explicit(self): mv = ModuleVersion.create_or_replace_from_spec( { 'id_name': 'x', 'name': 'x', 'category': 'Clean', 'parameters': [{ 'id_name': 'whee', 'type': 'custom' }], 'param_schema': { 'id_name': { 'type': 'dict', 'properties': { 'x': { 'type': 'integer' }, 'y': { 'type': 'string', 'default': 'X' }, }, }, }, }, source_version_hash='1.0') self.assertEqual( repr(mv.param_schema), repr( ParamDType.Dict({ 'id_name': ParamDType.Dict({ 'x': ParamDType.Integer(), 'y': ParamDType.String(default='X'), }), })))
def test_map_coerce_dict_wrong_value_type(self): dtype = ParamDType.Map(value_dtype=ParamDType.String()) value = dtype.coerce({'a': 1, 'b': None}) self.assertEqual(value, {'a': '1', 'b': ''})
def test_map_coerce_non_dict(self): dtype = ParamDType.Map(value_dtype=ParamDType.String()) value = dtype.coerce([1, 2, 3]) self.assertEqual(value, {})
def test_map_coerce_none(self): dtype = ParamDType.Map(value_dtype=ParamDType.String()) value = dtype.coerce(None) self.assertEqual(value, {})
def test_map_validate_bad_value_dtype(self): dtype = ParamDType.Map(value_dtype=ParamDType.String()) value = {'a': 1, 'c': 2} with self.assertRaises(ValueError): dtype.validate(value)
def test_map_validate_ok(self): dtype = ParamDType.Map(value_dtype=ParamDType.String()) value = {'a': 'b', 'c': 'd'} dtype.validate(value)