aboutsummaryrefslogtreecommitdiff
path: root/tests/test_pandora/test_models.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_pandora/test_models.py')
-rw-r--r--tests/test_pandora/test_models.py25
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
38class TestPandoraModel(TestCase): 38class 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