Browse Source

improve test coverage for serializers

Damien ACCORSI 10 years ago
parent
commit
5ae4ce0a9b

+ 1 - 1
tracim/tracim/model/serializers.py View File

@@ -130,7 +130,7 @@ class Context(object):
130 130
                 if model_class in Context._converters[CTX.DEFAULT]:
131 131
                     return Context._converters[CTX.DEFAULT][model_class]
132 132
 
133
-            raise ContextConverterNotFoundException(context_string,model_class)
133
+            raise ContextConverterNotFoundException(context_string, model_class)
134 134
 
135 135
     def __init__(self, context_string, base_url=''):
136 136
         """

+ 86 - 2
tracim/tracim/tests/library/test_serializers.py View File

@@ -8,7 +8,7 @@ from sqlalchemy.orm.exc import NoResultFound
8 8
 
9 9
 import transaction
10 10
 
11
-
11
+from tg.util import LazyString
12 12
 from tracim.model.data import Content
13 13
 from tracim.model.data import ContentType
14 14
 from tracim.model.data import Workspace
@@ -17,6 +17,7 @@ from tracim.model.serializers import Context
17 17
 from tracim.model.serializers import ContextConverterNotFoundException
18 18
 from tracim.model.serializers import CTX
19 19
 from tracim.model.serializers import DictLikeClass
20
+from tracim.model.serializers import pod_serializer
20 21
 
21 22
 from tracim.model.data import ActionDescription
22 23
 
@@ -140,4 +141,87 @@ class TestSerializers(TestStandard):
140 141
     #     ok_('urls' in res.folder.keys())
141 142
     #     ok_('delete' in res.urls.keys())
142 143
     #
143
-    #     eq_(8, len(res.keys()), res)
144
+    #     eq_(8, len(res.keys()), res)
145
+
146
+    def test_serializer_get_converter_return_CTX_DEFAULT(self):
147
+
148
+        class A(object):
149
+            pass
150
+
151
+        @pod_serializer(A, CTX.DEFAULT)
152
+        def dummy_converter(item: A, context: Context):
153
+            return DictLikeClass({'a': 'agaga'})
154
+
155
+        converter = Context.get_converter(CTX.FILE, A)
156
+        eq_(converter, dummy_converter)
157
+
158
+    @raises(ContextConverterNotFoundException)
159
+    def test_serializer_get_converter_raise_ContextConverterNotFoundException(self):
160
+        class A(object):
161
+            pass
162
+
163
+        @pod_serializer(A, CTX.PAGE)
164
+        def dummy_converter(item: A, context: Context):
165
+            return DictLikeClass({'a': 'agaga'})
166
+
167
+        converter = Context.get_converter(CTX.FILE, A)
168
+
169
+    def test_serializer_toDict_int_str_and_LazyString(self):
170
+
171
+        s = Context(CTX.DEFAULT).toDict(5)
172
+        ok_(isinstance(s, int))
173
+        eq_(5, s)
174
+
175
+        s2 = Context(CTX.DEFAULT).toDict('bob')
176
+        ok_(isinstance(s2, str))
177
+        eq_('bob', s2)
178
+
179
+        lazystr = LazyString('bob')
180
+        s3 = Context(CTX.DEFAULT).toDict(lazystr)
181
+        ok_(isinstance(s3, LazyString))
182
+        eq_(lazystr, s3)
183
+
184
+    def test_serializer_toDict_for_list_of_objects(self):
185
+
186
+        class A(object):
187
+            def __init__(self, name):
188
+                self.name = name
189
+
190
+        @pod_serializer(A, CTX.DEFAULT)
191
+        def dummy_converter(item: A, context: Context):
192
+            return DictLikeClass({'name': item.name})
193
+
194
+        mylist = [
195
+            A('a'), A('b'), A('C')
196
+        ]
197
+
198
+        s = Context(CTX.DEFAULT).toDict(mylist)
199
+        ok_('name' in s[0].keys())
200
+        eq_('a', s[0].name)
201
+        ok_('name' in s[1].keys())
202
+        eq_('b', s[1].name)
203
+        ok_('name' in s[2].keys())
204
+        eq_('C', s[2].name)
205
+        eq_(3, len(s))
206
+
207
+        s2 = Context(CTX.DEFAULT).toDict(mylist, 'subitems', 'subitems_nb')
208
+
209
+        print('----------------->  ---> ', s2)
210
+        print('----------------->  ', s2.items)
211
+        ok_('subitems' in s2.keys(), s2)
212
+
213
+        ok_('name' in s2.subitems[0].keys())
214
+        eq_('a', s2.subitems[0].name)
215
+        ok_('name' in s2.subitems[1].keys())
216
+        eq_('b', s2.subitems[1].name)
217
+        ok_('name' in s2.subitems[2].keys())
218
+        eq_('C', s2.subitems[2].name)
219
+
220
+        ok_('subitems' in s2.keys())
221
+        ok_('subitems_nb' in s2.keys())
222
+        eq_(3, s2.subitems_nb)
223
+        eq_(3, len(s2.subitems))
224
+
225
+
226
+
227
+        eq_(2, len(s2))