test/unittest_selectors.py
branchstable
changeset 6908 f07dc0e8948d
parent 6885 ea4baa1d16d6
child 6919 8fd6921f3e7c
equal deleted inserted replaced
6907:449e5b46ed3d 6908:f07dc0e8948d
    22 
    22 
    23 from cubicweb import Binary
    23 from cubicweb import Binary
    24 from cubicweb.devtools.testlib import CubicWebTC
    24 from cubicweb.devtools.testlib import CubicWebTC
    25 from cubicweb.appobject import Selector, AndSelector, OrSelector
    25 from cubicweb.appobject import Selector, AndSelector, OrSelector
    26 from cubicweb.selectors import (is_instance, adaptable, match_user_groups,
    26 from cubicweb.selectors import (is_instance, adaptable, match_user_groups,
    27                                 multi_lines_rset, score_entity)
    27                                 multi_lines_rset, score_entity, is_in_state)
    28 from cubicweb.interfaces import IDownloadable
    28 from cubicweb.interfaces import IDownloadable
    29 from cubicweb.web import action
    29 from cubicweb.web import action
       
    30 from cubicweb.server.migractions import ServerMigrationHelper
    30 
    31 
    31 class _1_(Selector):
    32 class _1_(Selector):
    32     def __call__(self, *args, **kwargs):
    33     def __call__(self, *args, **kwargs):
    33         return 1
    34         return 1
    34 
    35 
   134         self.assertEqual(selector(None), 1)
   135         self.assertEqual(selector(None), 1)
   135         selector = _0_()
   136         selector = _0_()
   136         selector |= _0_()
   137         selector |= _0_()
   137         selector |= _0_()
   138         selector |= _0_()
   138         self.assertEqual(selector(None), 0)
   139         self.assertEqual(selector(None), 0)
       
   140 
       
   141 class IsInStateSelectorTC(CubicWebTC):
       
   142     def setup_database(self):
       
   143         mh = ServerMigrationHelper(self.repo.config, None,
       
   144                                    repo=self.repo, cnx=self.cnx,
       
   145                                    interactive=False)
       
   146         wf = mh.cmd_add_workflow('testwf', 'StateFull', default=True)
       
   147         initial = wf.add_state(u'initial', initial=True)
       
   148         final = wf.add_state(u'final')
       
   149         wf.add_transition(u'forward', (initial,), final)
       
   150 
       
   151     def test_initial_state(self):
       
   152         req = self.request()
       
   153         entity = req.create_entity('StateFull')
       
   154         selector = is_in_state(u'initial')
       
   155         self.commit()
       
   156         score = selector(entity.__class__, None, entity=entity)
       
   157         self.assertEqual(score, 1)
       
   158 
       
   159     def test_final_state(self):
       
   160         req = self.request()
       
   161         entity = req.create_entity('StateFull')
       
   162         selector = is_in_state(u'initial')
       
   163         self.commit()
       
   164         entity.cw_adapt_to('IWorkflowable').fire_transition(u'forward')
       
   165         self.commit()
       
   166         score = selector(entity.__class__, None, entity=entity)
       
   167         self.assertEqual(score, 0)
       
   168         selector = is_in_state(u'final')
       
   169         score = selector(entity.__class__, None, entity=entity)
       
   170         self.assertEqual(score, 1)
   139 
   171 
   140 
   172 
   141 class ImplementsSelectorTC(CubicWebTC):
   173 class ImplementsSelectorTC(CubicWebTC):
   142     def test_etype_priority(self):
   174     def test_etype_priority(self):
   143         req = self.request()
   175         req = self.request()