|
1 | 1 | from unittest import TestCase |
2 | | - |
3 | | -from pydictable import DictField, StrField, DataValidationError, DictAble, ObjectField, UnionField |
| 2 | +from pydictable import DictField, StrField, DataValidationError, DictAble, ObjectField, UnionField, ListField |
4 | 3 |
|
5 | 4 |
|
6 | 5 | class TestField(TestCase): |
@@ -59,3 +58,28 @@ class Rule(DictAble): |
59 | 58 |
|
60 | 59 | r = Rule(dict={'expression': {'expression': 'nested'}}) |
61 | 60 | self.assertEqual(r.expression.expression, 'nested') |
| 61 | + |
| 62 | + def test_list_field(self): |
| 63 | + class MyList(list): |
| 64 | + pass |
| 65 | + |
| 66 | + class MyListField(ListField): |
| 67 | + def validate_dict(self, field_name: str, v): |
| 68 | + super(MyListField, self).validate_dict(field_name, v) |
| 69 | + assert type(v) == list |
| 70 | + |
| 71 | + def validate(self, field_name: str, v): |
| 72 | + super(MyListField, self).validate(field_name, v) |
| 73 | + assert type(v) == list |
| 74 | + |
| 75 | + my_list = MyList(['A', 'B']) |
| 76 | + |
| 77 | + field = MyListField(StrField()) |
| 78 | + self.assertRaises(AssertionError, lambda: field.validate_dict('x', my_list)) |
| 79 | + self.assertRaises(AssertionError, lambda: field.validate('x', my_list)) |
| 80 | + |
| 81 | + field = ListField(StrField()) |
| 82 | + field.validate_dict('x', my_list) |
| 83 | + field.validate('x', my_list) |
| 84 | + field.validate_dict('x', list(['A', 'B'])) |
| 85 | + field.validate('x', list(['A', 'B'])) |
0 commit comments