Browse Source

Merge pull request #7 from lebouquetin/master

Tracim 10 years ago
parent
commit
99934106b6

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

130
                 if model_class in Context._converters[CTX.DEFAULT]:
130
                 if model_class in Context._converters[CTX.DEFAULT]:
131
                     return Context._converters[CTX.DEFAULT][model_class]
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
     def __init__(self, context_string, base_url=''):
135
     def __init__(self, context_string, base_url=''):
136
         """
136
         """

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

8
 
8
 
9
 import transaction
9
 import transaction
10
 
10
 
11
-
11
+from tg.util import LazyString
12
 from tracim.model.data import Content
12
 from tracim.model.data import Content
13
 from tracim.model.data import ContentType
13
 from tracim.model.data import ContentType
14
 from tracim.model.data import Workspace
14
 from tracim.model.data import Workspace
17
 from tracim.model.serializers import ContextConverterNotFoundException
17
 from tracim.model.serializers import ContextConverterNotFoundException
18
 from tracim.model.serializers import CTX
18
 from tracim.model.serializers import CTX
19
 from tracim.model.serializers import DictLikeClass
19
 from tracim.model.serializers import DictLikeClass
20
+from tracim.model.serializers import pod_serializer
20
 
21
 
21
 from tracim.model.data import ActionDescription
22
 from tracim.model.data import ActionDescription
22
 
23
 
140
     #     ok_('urls' in res.folder.keys())
141
     #     ok_('urls' in res.folder.keys())
141
     #     ok_('delete' in res.urls.keys())
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))