diff options
Diffstat (limited to 'tests/test_pandora/test_models.py')
-rw-r--r-- | tests/test_pandora/test_models.py | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/tests/test_pandora/test_models.py b/tests/test_pandora/test_models.py index 914f09e..1310d71 100644 --- a/tests/test_pandora/test_models.py +++ b/tests/test_pandora/test_models.py | |||
@@ -37,15 +37,26 @@ class TestModelMetaClass(TestCase): | |||
37 | 37 | ||
38 | class TestPandoraModel(TestCase): | 38 | class TestPandoraModel(TestCase): |
39 | 39 | ||
40 | JSON_DATA = {"field2": ["test2"], "field3": 41} | 40 | JSON_DATA = { |
41 | "field2": ["test2"], | ||
42 | "field3": 41, | ||
43 | "field4": {"field1": "foo"}, | ||
44 | "field5": [{"field1": "foo"}, {"field1": "bar"}], | ||
45 | } | ||
41 | 46 | ||
42 | class TestModel(m.PandoraModel): | 47 | class TestModel(m.PandoraModel): |
43 | 48 | ||
49 | class SubModel(m.PandoraModel): | ||
50 | |||
51 | field1 = m.Field("field1") | ||
52 | |||
44 | THE_LIST = [] | 53 | THE_LIST = [] |
45 | 54 | ||
46 | field1 = m.Field("field1", default="a string") | 55 | field1 = m.Field("field1", default="a string") |
47 | field2 = m.Field("field2", default=THE_LIST) | 56 | field2 = m.Field("field2", default=THE_LIST) |
48 | field3 = m.Field("field3", formatter=lambda c, x: x + 1) | 57 | field3 = m.Field("field3", formatter=lambda c, x: x + 1) |
58 | field4 = m.Field("field4", model=SubModel) | ||
59 | field5 = m.Field("field5", model=SubModel) | ||
49 | 60 | ||
50 | class NoFieldsModel(m.PandoraModel): | 61 | class NoFieldsModel(m.PandoraModel): |
51 | pass | 62 | pass |
@@ -76,6 +87,14 @@ class TestPandoraModel(TestCase): | |||
76 | self.assertEqual("a string", result.field1) | 87 | self.assertEqual("a string", result.field1) |
77 | self.assertEqual(["test2"], result.field2) | 88 | self.assertEqual(["test2"], result.field2) |
78 | 89 | ||
90 | def test_it_creates_sub_models(self): | ||
91 | result = self.TestModel.from_json(None, self.JSON_DATA) | ||
92 | self.assertIsInstance(result.field4, self.TestModel.SubModel) | ||
93 | self.assertEqual("foo", result.field4.field1) | ||
94 | self.assertEqual(2, len(result.field5)) | ||
95 | self.assertEqual("foo", result.field5[0].field1) | ||
96 | self.assertEqual("bar", result.field5[1].field1) | ||
97 | |||
79 | def test_populate_fields_calls_formatter(self): | 98 | def test_populate_fields_calls_formatter(self): |
80 | result = self.TestModel.from_json(None, self.JSON_DATA) | 99 | result = self.TestModel.from_json(None, self.JSON_DATA) |
81 | self.assertEqual(42, result.field3) | 100 | self.assertEqual(42, result.field3) |
@@ -87,7 +106,9 @@ class TestPandoraModel(TestCase): | |||
87 | self.assertEqual("a string", result[1].field1) | 106 | self.assertEqual("a string", result[1].field1) |
88 | 107 | ||
89 | def test_repr(self): | 108 | def test_repr(self): |
90 | expected = "TestModel(field1='a string', field2=['test2'], field3=42)" | 109 | expected = ("TestModel(field1='a string', field2=['test2'], field3=42," |
110 | " field4=SubModel(field1='foo'), " | ||
111 | "field5=[SubModel(field1='foo'), SubModel(field1='bar')])") | ||
91 | result = self.TestModel.from_json(None, self.JSON_DATA) | 112 | result = self.TestModel.from_json(None, self.JSON_DATA) |
92 | self.assertEqual(expected, repr(result)) | 113 | self.assertEqual(expected, repr(result)) |
93 | 114 | ||