Пример #1
0
 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)
Пример #2
0
 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(),
                 }))))
Пример #3
0
    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),
                })))
Пример #4
0
    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'),
                    }),
                })))
Пример #5
0
 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': ''})
Пример #6
0
 def test_map_coerce_non_dict(self):
     dtype = ParamDType.Map(value_dtype=ParamDType.String())
     value = dtype.coerce([1, 2, 3])
     self.assertEqual(value, {})
Пример #7
0
 def test_map_coerce_none(self):
     dtype = ParamDType.Map(value_dtype=ParamDType.String())
     value = dtype.coerce(None)
     self.assertEqual(value, {})
Пример #8
0
 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)
Пример #9
0
 def test_map_validate_ok(self):
     dtype = ParamDType.Map(value_dtype=ParamDType.String())
     value = {'a': 'b', 'c': 'd'}
     dtype.validate(value)