130 |
130 |
131 def test_propertiesform_admin(self): |
131 def test_propertiesform_admin(self): |
132 assert self.vreg['views']['propertiesform'] |
132 assert self.vreg['views']['propertiesform'] |
133 rset1, req1 = self.env.get_rset_and_req('CWUser X WHERE X login "admin"') |
133 rset1, req1 = self.env.get_rset_and_req('CWUser X WHERE X login "admin"') |
134 rset2, req2 = self.env.get_rset_and_req('CWUser X WHERE X login "anon"') |
134 rset2, req2 = self.env.get_rset_and_req('CWUser X WHERE X login "anon"') |
135 self.failUnless(self.vreg.select('views', 'propertiesform', req1, rset=None)) |
135 self.failUnless(self.vreg['views'].select('propertiesform', req1, rset=None)) |
136 self.failUnless(self.vreg.select('views', 'propertiesform', req1, rset=rset1)) |
136 self.failUnless(self.vreg['views'].select('propertiesform', req1, rset=rset1)) |
137 self.failUnless(self.vreg.select('views', 'propertiesform', req2, rset=rset2)) |
137 self.failUnless(self.vreg['views'].select('propertiesform', req2, rset=rset2)) |
138 |
138 |
139 def test_propertiesform_anon(self): |
139 def test_propertiesform_anon(self): |
140 self.login('anon') |
140 self.login('anon') |
141 rset1, req1 = self.env.get_rset_and_req('CWUser X WHERE X login "admin"') |
141 rset1, req1 = self.env.get_rset_and_req('CWUser X WHERE X login "admin"') |
142 rset2, req2 = self.env.get_rset_and_req('CWUser X WHERE X login "anon"') |
142 rset2, req2 = self.env.get_rset_and_req('CWUser X WHERE X login "anon"') |
143 self.assertRaises(NoSelectableObject, self.vreg.select, 'views', 'propertiesform', req1, rset=None) |
143 self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'propertiesform', req1, rset=None) |
144 self.assertRaises(NoSelectableObject, self.vreg.select, 'views', 'propertiesform', req1, rset=rset1) |
144 self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'propertiesform', req1, rset=rset1) |
145 self.assertRaises(NoSelectableObject, self.vreg.select, 'views', 'propertiesform', req1, rset=rset2) |
145 self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'propertiesform', req1, rset=rset2) |
146 |
146 |
147 def test_propertiesform_jdoe(self): |
147 def test_propertiesform_jdoe(self): |
148 self.create_user('jdoe') |
148 self.create_user('jdoe') |
149 self.login('jdoe') |
149 self.login('jdoe') |
150 rset1, req1 = self.env.get_rset_and_req('CWUser X WHERE X login "admin"') |
150 rset1, req1 = self.env.get_rset_and_req('CWUser X WHERE X login "admin"') |
151 rset2, req2 = self.env.get_rset_and_req('CWUser X WHERE X login "jdoe"') |
151 rset2, req2 = self.env.get_rset_and_req('CWUser X WHERE X login "jdoe"') |
152 self.failUnless(self.vreg.select('views', 'propertiesform', req1, rset=None)) |
152 self.failUnless(self.vreg['views'].select('propertiesform', req1, rset=None)) |
153 self.assertRaises(NoSelectableObject, self.vreg.select, 'views', 'propertiesform', req1, rset=rset1) |
153 self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'propertiesform', req1, rset=rset1) |
154 self.failUnless(self.vreg.select('views', 'propertiesform', req2, rset=rset2)) |
154 self.failUnless(self.vreg['views'].select('propertiesform', req2, rset=rset2)) |
155 |
155 |
156 def test_possible_views_multiple_different_types(self): |
156 def test_possible_views_multiple_different_types(self): |
157 rset, req = self.env.get_rset_and_req('Any X') |
157 rset, req = self.env.get_rset_and_req('Any X') |
158 self.assertListEqual(self.pviews(req, rset), |
158 self.assertListEqual(self.pviews(req, rset), |
159 [('csvexport', csvexport.CSVRsetView), |
159 [('csvexport', csvexport.CSVRsetView), |
265 def test_select_creation_form(self): |
265 def test_select_creation_form(self): |
266 rset = None |
266 rset = None |
267 req = self.request() |
267 req = self.request() |
268 # creation form |
268 # creation form |
269 req.form['etype'] = 'CWGroup' |
269 req.form['etype'] = 'CWGroup' |
270 self.assertIsInstance(self.vreg.select('views', 'creation', req, rset=rset), |
270 self.assertIsInstance(self.vreg['views'].select('creation', req, rset=rset), |
271 editforms.CreationFormView) |
271 editforms.CreationFormView) |
272 del req.form['etype'] |
272 del req.form['etype'] |
273 # custom creation form |
273 # custom creation form |
274 class CWUserCreationForm(editforms.CreationFormView): |
274 class CWUserCreationForm(editforms.CreationFormView): |
275 __select__ = specified_etype_implements('CWUser') |
275 __select__ = specified_etype_implements('CWUser') |
276 self.vreg._loadedmods[__name__] = {} |
276 self.vreg._loadedmods[__name__] = {} |
277 self.vreg.register_vobject_class(CWUserCreationForm) |
277 self.vreg.register_vobject_class(CWUserCreationForm) |
278 req.form['etype'] = 'CWUser' |
278 req.form['etype'] = 'CWUser' |
279 self.assertIsInstance(self.vreg.select('views', 'creation', req, rset=rset), |
279 self.assertIsInstance(self.vreg['views'].select('creation', req, rset=rset), |
280 CWUserCreationForm) |
280 CWUserCreationForm) |
281 |
281 |
282 def test_select_view(self): |
282 def test_select_view(self): |
283 # no entity |
283 # no entity |
284 rset = None |
284 rset = None |
285 req = self.request() |
285 req = self.request() |
286 self.assertIsInstance(self.vreg.select('views', 'index', req, rset=rset), |
286 self.assertIsInstance(self.vreg['views'].select('index', req, rset=rset), |
287 startup.IndexView) |
287 startup.IndexView) |
288 self.failUnlessRaises(NoSelectableObject, |
288 self.failUnlessRaises(NoSelectableObject, |
289 self.vreg.select, 'views', 'primary', req, rset=rset) |
289 self.vreg['views'].select, 'primary', req, rset=rset) |
290 self.failUnlessRaises(NoSelectableObject, |
290 self.failUnlessRaises(NoSelectableObject, |
291 self.vreg.select, 'views', 'table', req, rset=rset) |
291 self.vreg['views'].select, 'table', req, rset=rset) |
292 |
292 |
293 # no entity |
293 # no entity |
294 rset, req = self.env.get_rset_and_req('Any X WHERE X eid 999999') |
294 rset, req = self.env.get_rset_and_req('Any X WHERE X eid 999999') |
295 self.failUnlessRaises(NoSelectableObject, |
295 self.failUnlessRaises(NoSelectableObject, |
296 self.vreg.select, 'views', 'index', req, rset=rset) |
296 self.vreg['views'].select, 'index', req, rset=rset) |
297 self.failUnlessRaises(NoSelectableObject, |
297 self.failUnlessRaises(NoSelectableObject, |
298 self.vreg.select, 'views', 'creation', req, rset=rset) |
298 self.vreg['views'].select, 'creation', req, rset=rset) |
299 self.failUnlessRaises(NoSelectableObject, |
299 self.failUnlessRaises(NoSelectableObject, |
300 self.vreg.select, 'views', 'primary', req, rset=rset) |
300 self.vreg['views'].select, 'primary', req, rset=rset) |
301 self.failUnlessRaises(NoSelectableObject, |
301 self.failUnlessRaises(NoSelectableObject, |
302 self.vreg.select, 'views', 'table', req, rset=rset) |
302 self.vreg['views'].select, 'table', req, rset=rset) |
303 # one entity |
303 # one entity |
304 rset, req = self.env.get_rset_and_req('CWGroup X WHERE X name "managers"') |
304 rset, req = self.env.get_rset_and_req('CWGroup X WHERE X name "managers"') |
305 self.assertIsInstance(self.vreg.select('views', 'primary', req, rset=rset), |
305 self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset), |
306 primary.PrimaryView) |
306 primary.PrimaryView) |
307 self.assertIsInstance(self.vreg.select('views', 'list', req, rset=rset), |
307 self.assertIsInstance(self.vreg['views'].select('list', req, rset=rset), |
308 baseviews.ListView) |
308 baseviews.ListView) |
309 self.assertIsInstance(self.vreg.select('views', 'edition', req, rset=rset), |
309 self.assertIsInstance(self.vreg['views'].select('edition', req, rset=rset), |
310 editforms.EditionFormView) |
310 editforms.EditionFormView) |
311 self.assertIsInstance(self.vreg.select('views', 'table', req, rset=rset), |
311 self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset), |
312 tableview.TableView) |
312 tableview.TableView) |
313 self.failUnlessRaises(NoSelectableObject, |
313 self.failUnlessRaises(NoSelectableObject, |
314 self.vreg.select, 'views', 'creation', req, rset=rset) |
314 self.vreg['views'].select, 'creation', req, rset=rset) |
315 self.failUnlessRaises(NoSelectableObject, |
315 self.failUnlessRaises(NoSelectableObject, |
316 self.vreg.select, 'views', 'index', req, rset=rset) |
316 self.vreg['views'].select, 'index', req, rset=rset) |
317 # list of entities of the same type |
317 # list of entities of the same type |
318 rset, req = self.env.get_rset_and_req('CWGroup X') |
318 rset, req = self.env.get_rset_and_req('CWGroup X') |
319 self.assertIsInstance(self.vreg.select('views', 'primary', req, rset=rset), |
319 self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset), |
320 primary.PrimaryView) |
320 primary.PrimaryView) |
321 self.assertIsInstance(self.vreg.select('views', 'list', req, rset=rset), |
321 self.assertIsInstance(self.vreg['views'].select('list', req, rset=rset), |
322 baseviews.ListView) |
322 baseviews.ListView) |
323 self.assertIsInstance(self.vreg.select('views', 'table', req, rset=rset), |
323 self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset), |
324 tableview.TableView) |
324 tableview.TableView) |
325 self.failUnlessRaises(NoSelectableObject, |
325 self.failUnlessRaises(NoSelectableObject, |
326 self.vreg.select, 'views', 'creation', req, rset=rset) |
326 self.vreg['views'].select, 'creation', req, rset=rset) |
327 # list of entities of different types |
327 # list of entities of different types |
328 rset, req = self.env.get_rset_and_req('Any X') |
328 rset, req = self.env.get_rset_and_req('Any X') |
329 self.assertIsInstance(self.vreg.select('views', 'primary', req, rset=rset), |
329 self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset), |
330 primary.PrimaryView) |
330 primary.PrimaryView) |
331 self.assertIsInstance(self.vreg.select('views', 'list', req, rset=rset), |
331 self.assertIsInstance(self.vreg['views'].select('list', req, rset=rset), |
332 baseviews.ListView) |
332 baseviews.ListView) |
333 self.assertIsInstance(self.vreg.select('views', 'table', req, rset=rset), |
333 self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset), |
334 tableview.TableView) |
334 tableview.TableView) |
335 self.failUnlessRaises(NoSelectableObject, |
335 self.failUnlessRaises(NoSelectableObject, |
336 self.vreg.select, 'views', 'creation', req, rset=rset) |
336 self.vreg['views'].select, 'creation', req, rset=rset) |
337 self.failUnlessRaises(NoSelectableObject, |
337 self.failUnlessRaises(NoSelectableObject, |
338 self.vreg.select, 'views', 'index', req, rset=rset) |
338 self.vreg['views'].select, 'index', req, rset=rset) |
339 # whatever |
339 # whatever |
340 rset, req = self.env.get_rset_and_req('Any N, X WHERE X in_group Y, Y name N') |
340 rset, req = self.env.get_rset_and_req('Any N, X WHERE X in_group Y, Y name N') |
341 self.assertIsInstance(self.vreg.select('views', 'table', req, rset=rset), |
341 self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset), |
342 tableview.TableView) |
342 tableview.TableView) |
343 self.failUnlessRaises(NoSelectableObject, |
343 self.failUnlessRaises(NoSelectableObject, |
344 self.vreg.select, 'views', 'index', req, rset=rset) |
344 self.vreg['views'].select, 'index', req, rset=rset) |
345 self.failUnlessRaises(NoSelectableObject, |
345 self.failUnlessRaises(NoSelectableObject, |
346 self.vreg.select, 'views', 'creation', req, rset=rset) |
346 self.vreg['views'].select, 'creation', req, rset=rset) |
347 self.failUnlessRaises(NoSelectableObject, |
347 self.failUnlessRaises(NoSelectableObject, |
348 self.vreg.select, 'views', 'primary', req, rset=rset) |
348 self.vreg['views'].select, 'primary', req, rset=rset) |
349 self.failUnlessRaises(NoSelectableObject, |
349 self.failUnlessRaises(NoSelectableObject, |
350 self.vreg.select, 'views', 'list', req, rset=rset) |
350 self.vreg['views'].select, 'list', req, rset=rset) |
351 self.failUnlessRaises(NoSelectableObject, |
351 self.failUnlessRaises(NoSelectableObject, |
352 self.vreg.select, 'views', 'edition', req, rset=rset) |
352 self.vreg['views'].select, 'edition', req, rset=rset) |
353 # mixed query |
353 # mixed query |
354 rset, req = self.env.get_rset_and_req('Any U,G WHERE U is CWUser, G is CWGroup') |
354 rset, req = self.env.get_rset_and_req('Any U,G WHERE U is CWUser, G is CWGroup') |
355 self.failUnlessRaises(NoSelectableObject, |
355 self.failUnlessRaises(NoSelectableObject, |
356 self.vreg.select, 'views', 'edition', req, rset=rset) |
356 self.vreg['views'].select, 'edition', req, rset=rset) |
357 self.failUnlessRaises(NoSelectableObject, |
357 self.failUnlessRaises(NoSelectableObject, |
358 self.vreg.select, 'views', 'creation', req, rset=rset) |
358 self.vreg['views'].select, 'creation', req, rset=rset) |
359 self.assertIsInstance(self.vreg.select('views', 'table', req, rset=rset), |
359 self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset), |
360 tableview.TableView) |
360 tableview.TableView) |
361 |
361 |
362 def test_interface_selector(self): |
362 def test_interface_selector(self): |
363 image = self.add_entity('Image', name=u'bim.png', data=Binary('bim')) |
363 image = self.add_entity('Image', name=u'bim.png', data=Binary('bim')) |
364 # image primary view priority |
364 # image primary view priority |
365 rset, req = self.env.get_rset_and_req('Image X WHERE X name "bim.png"') |
365 rset, req = self.env.get_rset_and_req('Image X WHERE X name "bim.png"') |
366 self.assertIsInstance(self.vreg.select('views', 'primary', req, rset=rset), |
366 self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset), |
367 idownloadable.IDownloadablePrimaryView) |
367 idownloadable.IDownloadablePrimaryView) |
368 |
368 |
369 |
369 |
370 def test_score_entity_selector(self): |
370 def test_score_entity_selector(self): |
371 image = self.add_entity('Image', name=u'bim.png', data=Binary('bim')) |
371 image = self.add_entity('Image', name=u'bim.png', data=Binary('bim')) |
372 # image primary view priority |
372 # image primary view priority |
373 rset, req = self.env.get_rset_and_req('Image X WHERE X name "bim.png"') |
373 rset, req = self.env.get_rset_and_req('Image X WHERE X name "bim.png"') |
374 self.assertIsInstance(self.vreg.select('views', 'image', req, rset=rset), |
374 self.assertIsInstance(self.vreg['views'].select('image', req, rset=rset), |
375 idownloadable.ImageView) |
375 idownloadable.ImageView) |
376 fileobj = self.add_entity('File', name=u'bim.txt', data=Binary('bim')) |
376 fileobj = self.add_entity('File', name=u'bim.txt', data=Binary('bim')) |
377 # image primary view priority |
377 # image primary view priority |
378 rset, req = self.env.get_rset_and_req('File X WHERE X name "bim.txt"') |
378 rset, req = self.env.get_rset_and_req('File X WHERE X name "bim.txt"') |
379 self.assertRaises(NoSelectableObject, self.vreg.select, 'views', 'image', req, rset=rset) |
379 self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'image', req, rset=rset) |
380 |
380 |
381 |
381 |
382 |
382 |
383 def _test_view(self, vid, rql, args): |
383 def _test_view(self, vid, rql, args): |
384 if rql is None: |
384 if rql is None: |
385 rset = None |
385 rset = None |
386 req = self.request() |
386 req = self.request() |
387 else: |
387 else: |
388 rset, req = self.env.get_rset_and_req(rql) |
388 rset, req = self.env.get_rset_and_req(rql) |
389 try: |
389 try: |
390 self.vreg.render(vid, req, rset=rset, **args) |
390 self.vreg['views'].render(vid, req, rset=rset, **args) |
391 except: |
391 except: |
392 print vid, rset, args |
392 print vid, rset, args |
393 raise |
393 raise |
394 |
394 |
395 def test_form(self): |
395 def test_form(self): |