浏览代码

Merge pull request #7 from lebouquetin/master

Tracim 10 年前
父节点
当前提交
99934106b6
共有 2 个文件被更改,包括 87 次插入3 次删除
  1. 1 1
      tracim/tracim/model/serializers.py
  2. 86 2
      tracim/tracim/tests/library/test_serializers.py

+ 1 - 1
tracim/tracim/model/serializers.py 查看文件

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 查看文件

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))