Ejemplo n.º 1
0
    def setUp(self):
        super(TestCustomPropertiesField, self).setUp()

        test_validator_1 = mock.MagicMock(__call__=lambda: None)
        test_validator_2 = {
            'expr': {
                'validators': [django_validator.RegexValidator()]
            }
        }
        test_validator_3 = {
            'expr': fields.RawProperty(None, None)
        }
        kwargs = {
            'validators': [
                test_validator_1, test_validator_2, test_validator_3
            ]
        }
        for arg in fields.FIELD_ARGS_TO_ESCAPE:
            kwargs[arg] = 'foo_' + arg

        custom_props_field = fields.CustomPropertiesField(**kwargs)

        for arg in fields.FIELD_ARGS_TO_ESCAPE:
            self.assertTrue(hasattr(custom_props_field, arg))
            self.assertEqual('foo_{0}'.format(arg),
                             getattr(custom_props_field, arg))
        self.assertEqual(3, len(custom_props_field.validators))
Ejemplo n.º 2
0
    def parse_spec(spec, keys=None):
        if keys is None:
            keys = []
        if not isinstance(keys, list):
            keys = [keys]
        key = keys and keys[-1] or None

        if isinstance(spec, yaql_expression.YaqlExpression):
            return key, fields.RawProperty(key, spec)
        elif isinstance(spec, dict):
            items = []
            for k, v in six.iteritems(spec):
                k = helpers.decamelize(k)
                new_key, v = parse_spec(v, keys + [k])
                if new_key:
                    k = new_key
                items.append((k, v))
            return key, dict(items)
        elif isinstance(spec, list):
            return key, [parse_spec(_spec, keys)[1] for _spec in spec]
        elif isinstance(spec,
                        six.string_types) and helpers.is_localizable(keys):
            return key, spec
        else:
            if key == 'hidden':
                if spec:
                    return 'widget', forms.HiddenInput
                else:
                    return 'widget', None
            elif key == 'regexp_validator':
                return 'validators', [helpers.prepare_regexp(spec)]
            else:
                return key, spec
Ejemplo n.º 3
0
    def test_finalize(self):
        class Control(object):
            def __init__(self):
                self.value = None

            @property
            def prop(self):
                return self.value

            @prop.setter
            def prop(self, value):
                self.value = value

            @prop.deleter
            def prop(self):
                delattr(self, 'value')

        mock_service = mock.Mock()
        mock_service.get_data.side_effect = ['foo_value']

        raw_property = fields.RawProperty('prop', 'foo_spec')
        props = raw_property.finalize(
            'foo_form_name', mock_service, Control)

        ctl = Control()

        result = props.fget(ctl)
        self.assertEqual('foo_value', result)

        props.fset(ctl, 'bar_value')
        self.assertEqual('bar_value', ctl.prop)

        props.fdel(ctl)
        self.assertNotIn('prop', ctl.__dict__)
Ejemplo n.º 4
0
    def parse_spec(spec, keys=None):
        if keys is None:
            keys = []

        if not isinstance(keys, types.ListType):
            keys = [keys]
        key = keys and keys[-1] or None
        if isinstance(spec, yaql_expression.YaqlExpression):
            return key, fields.RawProperty(key, spec)
        elif isinstance(spec, types.DictType):
            items = []
            for k, v in spec.iteritems():
                if not k in ('type', 'name'):
                    k = helpers.decamelize(k)
                    new_key, v = parse_spec(v, keys + [k])
                    if new_key:
                        k = new_key
                    items.append((k, v))
            return key, dict(items)
        elif isinstance(spec, types.ListType):
            return key, [parse_spec(_spec, keys)[1] for _spec in spec]
        elif isinstance(spec, basestring) and helpers.is_localizable(keys):
            return key, _(spec)
        else:
            if key == 'type':
                return key, TYPES[spec]
            elif key == 'hidden' and spec is True:
                return 'widget', forms.HiddenInput
            elif key == 'regexp_validator':
                return 'validators', [helpers.prepare_regexp(spec)]
            else:
                return key, spec
Ejemplo n.º 5
0
    def test_finalize_properties(self):
        finalize_properties = fields.CustomPropertiesField.finalize_properties
        kwargs = {
            'foo_raw_property': fields.RawProperty('foo_key', 'foo_spec')
        }
        mock_service = mock.Mock()

        result = finalize_properties(kwargs, 'foo_form_name', mock_service)
        self.assertIsNotNone(result)
        result = finalize_properties({}, 'foo_form_name', mock_service)
        self.assertIsNotNone(result)