Exemplo n.º 1
0
    def test_monkeypatch(self):
        class J(Json):
            a = StringField()

        self.assertEqual(J._unbound_fields, None)
        J()
        self.assertEqual(J._unbound_fields, [('a', J.a)])
        J.b = StringField()
        self.assertEqual(J._unbound_fields, None)
        J()
        self.assertEqual(J._unbound_fields, [('a', J.a), ('b', J.b)])
        del J.a
        self.assertRaises(AttributeError, lambda: J.a)
        J()
        self.assertEqual(J._unbound_fields, [('b', J.b)])
        J._m = StringField()
        self.assertEqual(J._unbound_fields, [('b', J.b)])
Exemplo n.º 2
0
    def test_ordered_fields(self):
        class MyForm(Json):
            strawberry = StringField()
            banana = StringField()
            kiwi = StringField()

        self.assertEqual([x.name for x in MyForm()], ['strawberry', 'banana', 'kiwi'])
        MyForm.apple = StringField()
        self.assertEqual([x.name for x in MyForm()], ['strawberry', 'banana', 'kiwi', 'apple'])
        del MyForm.banana
        self.assertEqual([x.name for x in MyForm()], ['strawberry', 'kiwi', 'apple'])
        MyForm.strawberry = StringField()
        self.assertEqual([x.name for x in MyForm()], ['kiwi', 'apple', 'strawberry'])
        # Ensure sort is stable: two fields with the same creation counter
        # should be subsequently sorted by name.
        MyForm.cherry = MyForm.kiwi
        self.assertEqual([x.name for x in MyForm()], ['cherry', 'kiwi', 'apple', 'strawberry'])
Exemplo n.º 3
0
 def test_field_adding(self):
     json = self.get_json()
     self.assertEqual(len(list(json)), 1)
     json['foo'] = StringField()
     self.assertEqual(len(list(json)), 2)
     json.process({'foo': 'hello'})
     self.assertEqual(json['foo'].data, 'hello')
     json['test'] = IntegerField()
     self.assertTrue(isinstance(json['test'], IntegerField))
     self.assertEqual(len(list(json)), 2)
     self.assertRaises(AttributeError, getattr, json['test'], 'data')
     json.process({'test': '1'})
     self.assertEqual(json['test'].data, 1)
     self.assertEqual(json['foo'].data, '')
Exemplo n.º 4
0
 class J(Json):
     a = StringField()
Exemplo n.º 5
0
    class F(Json):
        class Meta:
            foo = 9

        test = StringField()
Exemplo n.º 6
0
 class MyForm(Json):
     strawberry = StringField()
     banana = StringField()
     kiwi = StringField()
Exemplo n.º 7
0
 def test_field_adding_disabled(self):
     json = self.F()
     self.assertRaises(TypeError, json.__setitem__, 'foo', StringField())
Exemplo n.º 8
0
    class F(Json):
        test = StringField()

        def validate_test(json, field):
            if field.data != 'foobar':
                raise ValidationError('error')
Exemplo n.º 9
0
    def get_json(self, **kwargs):
        def validate_test(json, field):
            if field.data != 'foobar':
                raise ValidationError('error')

        return BaseJson({'test': StringField(validators=[validate_test])}, **kwargs)
Exemplo n.º 10
0
 class B(A):
     b = StringField()
     c = StringField()
Exemplo n.º 11
0
 class A(Json):
     a = StringField()
     c = StringField()