aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMike Crute <mcrute@gmail.com>2015-07-18 11:40:32 -0700
committerMike Crute <mcrute@gmail.com>2015-07-18 11:47:25 -0700
commitc7f9c15c93bfc8010e109193a1e8214c7645553e (patch)
tree0acd4e695cb71ad9ecaa90455c31cd19603146bf /tests
parent1a84a62c101149df9cbc0fe5e17e88c117d8ac73 (diff)
downloadpydora-c7f9c15c93bfc8010e109193a1e8214c7645553e.tar.bz2
pydora-c7f9c15c93bfc8010e109193a1e8214c7645553e.tar.xz
pydora-c7f9c15c93bfc8010e109193a1e8214c7645553e.zip
Allow list models to be indexed
Fixes #16
Diffstat (limited to 'tests')
-rw-r--r--tests/test_pandora/test_models.py42
1 files changed, 32 insertions, 10 deletions
diff --git a/tests/test_pandora/test_models.py b/tests/test_pandora/test_models.py
index fda25d4..8d823c8 100644
--- a/tests/test_pandora/test_models.py
+++ b/tests/test_pandora/test_models.py
@@ -98,6 +98,7 @@ class TestPandoraModel(TestCase):
98 98
99class TestSubModel(m.PandoraModel): 99class TestSubModel(m.PandoraModel):
100 100
101 idx = m.Field("idx")
101 fieldS1 = m.Field("fieldS1") 102 fieldS1 = m.Field("fieldS1")
102 103
103 104
@@ -105,25 +106,46 @@ class TestPandoraListModel(TestCase):
105 106
106 JSON_DATA = { 107 JSON_DATA = {
107 "field1": 42, 108 "field1": 42,
108 "field2": [{"fieldS1": "Foo" }, { "fieldS1": "Bar" }] 109 "field2": [
110 { "idx": "foo", "fieldS1": "Foo" },
111 { "idx": "bar", "fieldS1": "Bar" },
112 ]
109 } 113 }
110 114
111 class TestModel(m.PandoraListModel): 115 class TestModel(m.PandoraListModel):
112 116
113 __list_key__ = "field2" 117 __list_key__ = "field2"
114 __list_model__ = TestSubModel 118 __list_model__ = TestSubModel
119 __index_key__ = "idx"
115 120
116 field1 = m.Field("field1") 121 field1 = m.Field("field1")
117 122
123 def setUp(self):
124 self.result = self.TestModel.from_json(None, self.JSON_DATA)
125
118 def test_creates_sub_models(self): 126 def test_creates_sub_models(self):
119 result = self.TestModel.from_json(None, self.JSON_DATA) 127 self.assertEqual(42, self.result.field1)
120 self.assertEqual(42, result.field1) 128 self.assertEqual(2, len(self.result))
121 self.assertEqual(2, len(result)) 129 self.assertEqual("Foo", self.result[0].fieldS1)
122 self.assertEqual("Foo", result[0].fieldS1) 130 self.assertEqual("Bar", self.result[1].fieldS1)
123 self.assertEqual("Bar", result[1].fieldS1)
124 131
125 def test_repr(self): 132 def test_repr(self):
126 expected = ("TestModel(field1=42, [TestSubModel(fieldS1='Foo'), " 133 expected = ("TestModel(field1=42, [TestSubModel(fieldS1='Foo', "
127 "TestSubModel(fieldS1='Bar')])") 134 "idx='foo'), TestSubModel(fieldS1='Bar', idx='bar')])")
128 result = self.TestModel.from_json(None, self.JSON_DATA) 135 self.assertEqual(expected, repr(self.result))
129 self.assertEqual(expected, repr(result)) 136
137 def test_indexed_model(self):
138 self.assertEqual(["bar", "foo"], sorted(self.result.keys()))
139 self.assertEqual(self.result._index.items(), self.result.items())
140
141 def test_getting_list_items(self):
142 self.assertEqual("Foo", self.result[0].fieldS1)
143 self.assertEqual("Bar", self.result[1].fieldS1)
144
145 def test_getting_dictionary_items(self):
146 self.assertEqual("Foo", self.result["foo"].fieldS1)
147 self.assertEqual("Bar", self.result["bar"].fieldS1)
148
149 def test_getting_keys_vs_indexes_are_identical(self):
150 self.assertEqual(self.result["foo"].fieldS1, self.result[0].fieldS1)
151 self.assertEqual(self.result["bar"].fieldS1, self.result[1].fieldS1)