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