web/test/unittest_viewselector.py
changeset 3451 6b46d73823f5
parent 3408 c92170fca813
child 3468 b02fa4db2868
equal deleted inserted replaced
3448:495862266785 3451:6b46d73823f5
    81                               ('systempropertiesform', cwproperties.SystemCWPropertiesForm),
    81                               ('systempropertiesform', cwproperties.SystemCWPropertiesForm),
    82                               ('tree', folderviews.FolderTreeView),
    82                               ('tree', folderviews.FolderTreeView),
    83                               ])
    83                               ])
    84 
    84 
    85     def test_possible_views_noresult(self):
    85     def test_possible_views_noresult(self):
    86         rset, req = self.rset_and_req('Any X WHERE X eid 999999')
    86         req = self.request()
       
    87         rset = req.execute('Any X WHERE X eid 999999')
    87         self.assertListEqual(self.pviews(req, rset),
    88         self.assertListEqual(self.pviews(req, rset),
    88                              [])
    89                              [])
    89 
    90 
    90     def test_possible_views_one_egroup(self):
    91     def test_possible_views_one_egroup(self):
    91         rset, req = self.rset_and_req('CWGroup X WHERE X name "managers"')
    92         req = self.request()
       
    93         rset = req.execute('CWGroup X WHERE X name "managers"')
    92         self.assertListEqual(self.pviews(req, rset),
    94         self.assertListEqual(self.pviews(req, rset),
    93                              [('adaptedlist', baseviews.AdaptedListView),
    95                              [('adaptedlist', baseviews.AdaptedListView),
    94                               ('csvexport', csvexport.CSVRsetView),
    96                               ('csvexport', csvexport.CSVRsetView),
    95                               ('ecsvexport', csvexport.CSVEntityView),
    97                               ('ecsvexport', csvexport.CSVEntityView),
    96                               ('editable-table', tableview.EditableTableView),
    98                               ('editable-table', tableview.EditableTableView),
   109                               ('xbel', xbel.XbelView),
   111                               ('xbel', xbel.XbelView),
   110                               ('xml', xmlrss.XMLView),
   112                               ('xml', xmlrss.XMLView),
   111                               ])
   113                               ])
   112 
   114 
   113     def test_possible_views_multiple_egroups(self):
   115     def test_possible_views_multiple_egroups(self):
   114         rset, req = self.rset_and_req('CWGroup X')
   116         req = self.request()
       
   117         rset = req.execute('CWGroup X')
   115         self.assertListEqual(self.pviews(req, rset),
   118         self.assertListEqual(self.pviews(req, rset),
   116                              [('adaptedlist', baseviews.AdaptedListView),
   119                              [('adaptedlist', baseviews.AdaptedListView),
   117                               ('csvexport', csvexport.CSVRsetView),
   120                               ('csvexport', csvexport.CSVRsetView),
   118                               ('ecsvexport', csvexport.CSVEntityView),
   121                               ('ecsvexport', csvexport.CSVEntityView),
   119                               ('editable-table', tableview.EditableTableView),
   122                               ('editable-table', tableview.EditableTableView),
   133                               ('xml', xmlrss.XMLView),
   136                               ('xml', xmlrss.XMLView),
   134                               ])
   137                               ])
   135 
   138 
   136     def test_propertiesform_admin(self):
   139     def test_propertiesform_admin(self):
   137         assert self.vreg['views']['propertiesform']
   140         assert self.vreg['views']['propertiesform']
   138         rset1, req1 = self.rset_and_req('CWUser X WHERE X login "admin"')
   141         req1 = self.request()
   139         rset2, req2 = self.rset_and_req('CWUser X WHERE X login "anon"')
   142         req2 = self.request()
       
   143         rset1 = req1.execute('CWUser X WHERE X login "admin"')
       
   144         rset2 = req2.execute('CWUser X WHERE X login "anon"')
   140         self.failUnless(self.vreg['views'].select('propertiesform', req1, rset=None))
   145         self.failUnless(self.vreg['views'].select('propertiesform', req1, rset=None))
   141         self.failUnless(self.vreg['views'].select('propertiesform', req1, rset=rset1))
   146         self.failUnless(self.vreg['views'].select('propertiesform', req1, rset=rset1))
   142         self.failUnless(self.vreg['views'].select('propertiesform', req2, rset=rset2))
   147         self.failUnless(self.vreg['views'].select('propertiesform', req2, rset=rset2))
   143 
   148 
   144     def test_propertiesform_anon(self):
   149     def test_propertiesform_anon(self):
   145         self.login('anon')
   150         self.login('anon')
   146         rset1, req1 = self.rset_and_req('CWUser X WHERE X login "admin"')
   151         req1 = self.request()
   147         rset2, req2 = self.rset_and_req('CWUser X WHERE X login "anon"')
   152         req2 = self.request()
       
   153         rset1 = req1.execute('CWUser X WHERE X login "admin"')
       
   154         rset2 = req2.execute('CWUser X WHERE X login "anon"')
   148         self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'propertiesform', req1, rset=None)
   155         self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'propertiesform', req1, rset=None)
   149         self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'propertiesform', req1, rset=rset1)
   156         self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'propertiesform', req1, rset=rset1)
   150         self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'propertiesform', req1, rset=rset2)
   157         self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'propertiesform', req1, rset=rset2)
   151 
   158 
   152     def test_propertiesform_jdoe(self):
   159     def test_propertiesform_jdoe(self):
   153         self.create_user('jdoe')
   160         self.create_user('jdoe')
   154         self.login('jdoe')
   161         self.login('jdoe')
   155         rset1, req1 = self.rset_and_req('CWUser X WHERE X login "admin"')
   162         req1 = self.request()
   156         rset2, req2 = self.rset_and_req('CWUser X WHERE X login "jdoe"')
   163         req2 = self.request()
       
   164         rset1 = req1.execute('CWUser X WHERE X login "admin"')
       
   165         rset2 = req2.execute('CWUser X WHERE X login "jdoe"')
   157         self.failUnless(self.vreg['views'].select('propertiesform', req1, rset=None))
   166         self.failUnless(self.vreg['views'].select('propertiesform', req1, rset=None))
   158         self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'propertiesform', req1, rset=rset1)
   167         self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'propertiesform', req1, rset=rset1)
   159         self.failUnless(self.vreg['views'].select('propertiesform', req2, rset=rset2))
   168         self.failUnless(self.vreg['views'].select('propertiesform', req2, rset=rset2))
   160 
   169 
   161     def test_possible_views_multiple_different_types(self):
   170     def test_possible_views_multiple_different_types(self):
   162         rset, req = self.rset_and_req('Any X')
   171         req = self.request()
       
   172         rset = req.execute('Any X')
   163         self.assertListEqual(self.pviews(req, rset),
   173         self.assertListEqual(self.pviews(req, rset),
   164                              [('csvexport', csvexport.CSVRsetView),
   174                              [('csvexport', csvexport.CSVRsetView),
   165                               ('ecsvexport', csvexport.CSVEntityView),
   175                               ('ecsvexport', csvexport.CSVEntityView),
   166                               ('editable-table', tableview.EditableTableView),
   176                               ('editable-table', tableview.EditableTableView),
   167                               ('filetree', treeview.FileTreeView),
   177                               ('filetree', treeview.FileTreeView),
   179                               ('xbel', xbel.XbelView),
   189                               ('xbel', xbel.XbelView),
   180                               ('xml', xmlrss.XMLView),
   190                               ('xml', xmlrss.XMLView),
   181                               ])
   191                               ])
   182 
   192 
   183     def test_possible_views_any_rset(self):
   193     def test_possible_views_any_rset(self):
   184         rset, req = self.rset_and_req('Any N, X WHERE X in_group Y, Y name N')
   194         req = self.request()
       
   195         rset = req.execute('Any N, X WHERE X in_group Y, Y name N')
   185         self.assertListEqual(self.pviews(req, rset),
   196         self.assertListEqual(self.pviews(req, rset),
   186                              [('csvexport', csvexport.CSVRsetView),
   197                              [('csvexport', csvexport.CSVRsetView),
   187                               ('editable-table', tableview.EditableTableView),
   198                               ('editable-table', tableview.EditableTableView),
   188                               ('rsetxml', xmlrss.XMLRsetView),
   199                               ('rsetxml', xmlrss.XMLRsetView),
   189                               ('table', tableview.TableView),
   200                               ('table', tableview.TableView),
   190                               ])
   201                               ])
   191 
   202 
   192     def test_possible_views_multiple_eusers(self):
   203     def test_possible_views_multiple_eusers(self):
   193         rset, req = self.rset_and_req('CWUser X')
   204         req = self.request()
       
   205         rset = req.execute('CWUser X')
   194         self.assertListEqual(self.pviews(req, rset),
   206         self.assertListEqual(self.pviews(req, rset),
   195                              [('adaptedlist', baseviews.AdaptedListView),
   207                              [('adaptedlist', baseviews.AdaptedListView),
   196                               ('csvexport', csvexport.CSVRsetView),
   208                               ('csvexport', csvexport.CSVRsetView),
   197                               ('ecsvexport', csvexport.CSVEntityView),
   209                               ('ecsvexport', csvexport.CSVEntityView),
   198                               ('editable-table', tableview.EditableTableView),
   210                               ('editable-table', tableview.EditableTableView),
   221                              {'useractions': USERACTIONS,
   233                              {'useractions': USERACTIONS,
   222                               'siteactions': SITEACTIONS,
   234                               'siteactions': SITEACTIONS,
   223 
   235 
   224                               })
   236                               })
   225     def test_possible_actions_no_entity(self):
   237     def test_possible_actions_no_entity(self):
   226         rset, req = self.rset_and_req('Any X WHERE X eid 999999')
   238         req = self.request()
       
   239         rset = req.execute('Any X WHERE X eid 999999')
   227         self.assertDictEqual(self.pactions(req, rset),
   240         self.assertDictEqual(self.pactions(req, rset),
   228                              {'useractions': USERACTIONS,
   241                              {'useractions': USERACTIONS,
   229                               'siteactions': SITEACTIONS,
   242                               'siteactions': SITEACTIONS,
   230                               })
   243                               })
   231 
   244 
   232     def test_possible_actions_same_type_entities(self):
   245     def test_possible_actions_same_type_entities(self):
   233         rset, req = self.rset_and_req('CWGroup X')
   246         req = self.request()
       
   247         rset = req.execute('CWGroup X')
   234         self.assertDictEqual(self.pactions(req, rset),
   248         self.assertDictEqual(self.pactions(req, rset),
   235                              {'useractions': USERACTIONS,
   249                              {'useractions': USERACTIONS,
   236                               'siteactions': SITEACTIONS,
   250                               'siteactions': SITEACTIONS,
   237                               'mainactions': [('muledit', actions.MultipleEditAction)],
   251                               'mainactions': [('muledit', actions.MultipleEditAction)],
   238                               'moreactions': [('delete', actions.DeleteAction),
   252                               'moreactions': [('delete', actions.DeleteAction),
   239                                               ('addentity', actions.AddNewAction)],
   253                                               ('addentity', actions.AddNewAction)],
   240                               })
   254                               })
   241 
   255 
   242     def test_possible_actions_different_types_entities(self):
   256     def test_possible_actions_different_types_entities(self):
   243         rset, req = self.rset_and_req('Any X')
   257         req = self.request()
       
   258         rset = req.execute('Any X')
   244         self.assertDictEqual(self.pactions(req, rset),
   259         self.assertDictEqual(self.pactions(req, rset),
   245                              {'useractions': USERACTIONS,
   260                              {'useractions': USERACTIONS,
   246                               'siteactions': SITEACTIONS,
   261                               'siteactions': SITEACTIONS,
   247                               'moreactions': [('delete', actions.DeleteAction)],
   262                               'moreactions': [('delete', actions.DeleteAction)],
   248                               })
   263                               })
   249 
   264 
   250     def test_possible_actions_final_entities(self):
   265     def test_possible_actions_final_entities(self):
   251         rset, req = self.rset_and_req('Any N, X WHERE X in_group Y, Y name N')
   266         req = self.request()
       
   267         rset = req.execute('Any N, X WHERE X in_group Y, Y name N')
   252         self.assertDictEqual(self.pactions(req, rset),
   268         self.assertDictEqual(self.pactions(req, rset),
   253                              {'useractions': USERACTIONS,
   269                              {'useractions': USERACTIONS,
   254                               'siteactions': SITEACTIONS})
   270                               'siteactions': SITEACTIONS})
   255 
   271 
   256     def test_possible_actions_eetype_cwuser_entity(self):
   272     def test_possible_actions_eetype_cwuser_entity(self):
   257         rset, req = self.rset_and_req('CWEType X WHERE X name "CWUser"')
   273         req = self.request()
       
   274         rset = req.execute('CWEType X WHERE X name "CWUser"')
   258         self.assertDictEqual(self.pactions(req, rset),
   275         self.assertDictEqual(self.pactions(req, rset),
   259                              {'useractions': USERACTIONS,
   276                              {'useractions': USERACTIONS,
   260                               'siteactions': SITEACTIONS,
   277                               'siteactions': SITEACTIONS,
   261                               'mainactions': [('edit', actions.ModifyAction)],
   278                               'mainactions': [('edit', actions.ModifyAction)],
   262                               'moreactions': [('managepermission', actions.ManagePermissionsAction),
   279                               'moreactions': [('managepermission', actions.ManagePermissionsAction),
   294                              self.vreg['views'].select, 'primary', req, rset=rset)
   311                              self.vreg['views'].select, 'primary', req, rset=rset)
   295         self.failUnlessRaises(NoSelectableObject,
   312         self.failUnlessRaises(NoSelectableObject,
   296                              self.vreg['views'].select, 'table', req, rset=rset)
   313                              self.vreg['views'].select, 'table', req, rset=rset)
   297 
   314 
   298         # no entity
   315         # no entity
   299         rset, req = self.rset_and_req('Any X WHERE X eid 999999')
   316         req = self.request()
       
   317         rset = req.execute('Any X WHERE X eid 999999')
   300         self.failUnlessRaises(NoSelectableObject,
   318         self.failUnlessRaises(NoSelectableObject,
   301                               self.vreg['views'].select, 'index', req, rset=rset)
   319                               self.vreg['views'].select, 'index', req, rset=rset)
   302         self.failUnlessRaises(NoSelectableObject,
   320         self.failUnlessRaises(NoSelectableObject,
   303                               self.vreg['views'].select, 'creation', req, rset=rset)
   321                               self.vreg['views'].select, 'creation', req, rset=rset)
   304         self.failUnlessRaises(NoSelectableObject,
   322         self.failUnlessRaises(NoSelectableObject,
   305                               self.vreg['views'].select, 'primary', req, rset=rset)
   323                               self.vreg['views'].select, 'primary', req, rset=rset)
   306         self.failUnlessRaises(NoSelectableObject,
   324         self.failUnlessRaises(NoSelectableObject,
   307                              self.vreg['views'].select, 'table', req, rset=rset)
   325                              self.vreg['views'].select, 'table', req, rset=rset)
   308         # one entity
   326         # one entity
   309         rset, req = self.rset_and_req('CWGroup X WHERE X name "managers"')
   327         req = self.request()
       
   328         rset = req.execute('CWGroup X WHERE X name "managers"')
   310         self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset),
   329         self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset),
   311                              primary.PrimaryView)
   330                              primary.PrimaryView)
   312         self.assertIsInstance(self.vreg['views'].select('list', req, rset=rset),
   331         self.assertIsInstance(self.vreg['views'].select('list', req, rset=rset),
   313                              baseviews.ListView)
   332                              baseviews.ListView)
   314         self.assertIsInstance(self.vreg['views'].select('edition', req, rset=rset),
   333         self.assertIsInstance(self.vreg['views'].select('edition', req, rset=rset),
   318         self.failUnlessRaises(NoSelectableObject,
   337         self.failUnlessRaises(NoSelectableObject,
   319                               self.vreg['views'].select, 'creation', req, rset=rset)
   338                               self.vreg['views'].select, 'creation', req, rset=rset)
   320         self.failUnlessRaises(NoSelectableObject,
   339         self.failUnlessRaises(NoSelectableObject,
   321                               self.vreg['views'].select, 'index', req, rset=rset)
   340                               self.vreg['views'].select, 'index', req, rset=rset)
   322         # list of entities of the same type
   341         # list of entities of the same type
   323         rset, req = self.rset_and_req('CWGroup X')
   342         req = self.request()
       
   343         rset = req.execute('CWGroup X')
   324         self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset),
   344         self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset),
   325                              primary.PrimaryView)
   345                              primary.PrimaryView)
   326         self.assertIsInstance(self.vreg['views'].select('list', req, rset=rset),
   346         self.assertIsInstance(self.vreg['views'].select('list', req, rset=rset),
   327                              baseviews.ListView)
   347                              baseviews.ListView)
   328         self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset),
   348         self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset),
   329                              tableview.TableView)
   349                              tableview.TableView)
   330         self.failUnlessRaises(NoSelectableObject,
   350         self.failUnlessRaises(NoSelectableObject,
   331                               self.vreg['views'].select, 'creation', req, rset=rset)
   351                               self.vreg['views'].select, 'creation', req, rset=rset)
   332         # list of entities of different types
   352         # list of entities of different types
   333         rset, req = self.rset_and_req('Any X')
   353         req = self.request()
       
   354         rset = req.execute('Any X')
   334         self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset),
   355         self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset),
   335                                   primary.PrimaryView)
   356                                   primary.PrimaryView)
   336         self.assertIsInstance(self.vreg['views'].select('list', req, rset=rset),
   357         self.assertIsInstance(self.vreg['views'].select('list', req, rset=rset),
   337                                   baseviews.ListView)
   358                                   baseviews.ListView)
   338         self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset),
   359         self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset),
   340         self.failUnlessRaises(NoSelectableObject,
   361         self.failUnlessRaises(NoSelectableObject,
   341                              self.vreg['views'].select, 'creation', req, rset=rset)
   362                              self.vreg['views'].select, 'creation', req, rset=rset)
   342         self.failUnlessRaises(NoSelectableObject,
   363         self.failUnlessRaises(NoSelectableObject,
   343                               self.vreg['views'].select, 'index', req, rset=rset)
   364                               self.vreg['views'].select, 'index', req, rset=rset)
   344         # whatever
   365         # whatever
   345         rset, req = self.rset_and_req('Any N, X WHERE X in_group Y, Y name N')
   366         req = self.request()
       
   367         rset = req.execute('Any N, X WHERE X in_group Y, Y name N')
   346         self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset),
   368         self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset),
   347                                   tableview.TableView)
   369                                   tableview.TableView)
   348         self.failUnlessRaises(NoSelectableObject,
   370         self.failUnlessRaises(NoSelectableObject,
   349                               self.vreg['views'].select, 'index', req, rset=rset)
   371                               self.vreg['views'].select, 'index', req, rset=rset)
   350         self.failUnlessRaises(NoSelectableObject,
   372         self.failUnlessRaises(NoSelectableObject,
   354         self.failUnlessRaises(NoSelectableObject,
   376         self.failUnlessRaises(NoSelectableObject,
   355                              self.vreg['views'].select, 'list', req, rset=rset)
   377                              self.vreg['views'].select, 'list', req, rset=rset)
   356         self.failUnlessRaises(NoSelectableObject,
   378         self.failUnlessRaises(NoSelectableObject,
   357                              self.vreg['views'].select, 'edition', req, rset=rset)
   379                              self.vreg['views'].select, 'edition', req, rset=rset)
   358         # mixed query
   380         # mixed query
   359         rset, req = self.rset_and_req('Any U,G WHERE U is CWUser, G is CWGroup')
   381         req = self.request()
       
   382         rset = req.execute('Any U,G WHERE U is CWUser, G is CWGroup')
   360         self.failUnlessRaises(NoSelectableObject,
   383         self.failUnlessRaises(NoSelectableObject,
   361                               self.vreg['views'].select, 'edition', req, rset=rset)
   384                               self.vreg['views'].select, 'edition', req, rset=rset)
   362         self.failUnlessRaises(NoSelectableObject,
   385         self.failUnlessRaises(NoSelectableObject,
   363                               self.vreg['views'].select, 'creation', req, rset=rset)
   386                               self.vreg['views'].select, 'creation', req, rset=rset)
   364         self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset),
   387         self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset),
   365                               tableview.TableView)
   388                               tableview.TableView)
   366 
   389 
   367     def test_interface_selector(self):
   390     def test_interface_selector(self):
   368         image = self.add_entity('Image', name=u'bim.png', data=Binary('bim'))
   391         image = self.add_entity('Image', name=u'bim.png', data=Binary('bim'))
   369         # image primary view priority
   392         # image primary view priority
   370         rset, req = self.rset_and_req('Image X WHERE X name "bim.png"')
   393         req = self.request()
       
   394         rset = req.execute('Image X WHERE X name "bim.png"')
   371         self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset),
   395         self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset),
   372                               idownloadable.IDownloadablePrimaryView)
   396                               idownloadable.IDownloadablePrimaryView)
   373 
   397 
   374 
   398 
   375     def test_score_entity_selector(self):
   399     def test_score_entity_selector(self):
   376         image = self.add_entity('Image', name=u'bim.png', data=Binary('bim'))
   400         image = self.add_entity('Image', name=u'bim.png', data=Binary('bim'))
   377         # image primary view priority
   401         # image primary view priority
   378         rset, req = self.rset_and_req('Image X WHERE X name "bim.png"')
   402         req = self.request()
       
   403         rset = req.execute('Image X WHERE X name "bim.png"')
   379         self.assertIsInstance(self.vreg['views'].select('image', req, rset=rset),
   404         self.assertIsInstance(self.vreg['views'].select('image', req, rset=rset),
   380                               idownloadable.ImageView)
   405                               idownloadable.ImageView)
   381         fileobj = self.add_entity('File', name=u'bim.txt', data=Binary('bim'))
   406         fileobj = self.add_entity('File', name=u'bim.txt', data=Binary('bim'))
   382         # image primary view priority
   407         # image primary view priority
   383         rset, req = self.rset_and_req('File X WHERE X name "bim.txt"')
   408         req = self.request()
       
   409         rset = req.execute('File X WHERE X name "bim.txt"')
   384         self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'image', req, rset=rset)
   410         self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'image', req, rset=rset)
   385 
   411 
   386 
   412 
   387 
   413 
   388     def _test_view(self, vid, rql, args):
   414     def _test_view(self, vid, rql, args):
   389         if rql is None:
   415         if rql is None:
   390             rset = None
   416             rset = None
   391             req = self.request()
   417             req = self.request()
   392         else:
   418         else:
   393             rset, req = self.rset_and_req(rql)
   419             req = self.request()
       
   420             rset = req.execute(rql)
   394         try:
   421         try:
   395             self.vreg['views'].render(vid, req, rset=rset, **args)
   422             self.vreg['views'].render(vid, req, rset=rset, **args)
   396         except:
   423         except:
   397             print vid, rset, args
   424             print vid, rset, args
   398             raise
   425             raise
   441     def tearDown(self):
   468     def tearDown(self):
   442         super(RQLActionTC, self).tearDown()
   469         super(RQLActionTC, self).tearDown()
   443         del self.vreg['actions']['testaction']
   470         del self.vreg['actions']['testaction']
   444 
   471 
   445     def test(self):
   472     def test(self):
   446         rset, req = self.rset_and_req('CWEType X WHERE X name "CWEType"')
   473         req = self.request()
       
   474         rset = req.execute('CWEType X WHERE X name "CWEType"')
   447         self.assertDictEqual(self.pactions(req, rset),
   475         self.assertDictEqual(self.pactions(req, rset),
   448                              {'useractions': USERACTIONS,
   476                              {'useractions': USERACTIONS,
   449                               'siteactions': SITEACTIONS,
   477                               'siteactions': SITEACTIONS,
   450                               'mainactions': [('edit', actions.ModifyAction)],
   478                               'mainactions': [('edit', actions.ModifyAction)],
   451                               'moreactions': [('managepermission', actions.ManagePermissionsAction),
   479                               'moreactions': [('managepermission', actions.ManagePermissionsAction),
   453                                               ('delete', actions.DeleteAction),
   481                                               ('delete', actions.DeleteAction),
   454                                               ('copy', actions.CopyAction),
   482                                               ('copy', actions.CopyAction),
   455                                               ('testaction', CWETypeRQLAction),
   483                                               ('testaction', CWETypeRQLAction),
   456                                               ],
   484                                               ],
   457                               })
   485                               })
   458         rset, req = self.rset_and_req('CWEType X WHERE X name "CWRType"')
   486         req = self.request()
       
   487         rset = req.execute('CWEType X WHERE X name "CWRType"')
   459         self.assertDictEqual(self.pactions(req, rset),
   488         self.assertDictEqual(self.pactions(req, rset),
   460                              {'useractions': USERACTIONS,
   489                              {'useractions': USERACTIONS,
   461                               'siteactions': SITEACTIONS,
   490                               'siteactions': SITEACTIONS,
   462                               'mainactions': [('edit', actions.ModifyAction)],
   491                               'mainactions': [('edit', actions.ModifyAction)],
   463                               'moreactions': [('managepermission', actions.ManagePermissionsAction),
   492                               'moreactions': [('managepermission', actions.ManagePermissionsAction),