def test_TaskUtilsMethods_can_do_transition1(self): task = get_object(oid='courrier1', ptype='dmsincomingmail')['tache1'] api.content.transition(task, transition='do_to_assign') self.assertEqual(api.content.get_state(task), 'to_do') view = TaskUtilsMethods(task, task.REQUEST) setRoles(self.portal, TEST_USER_ID, ['Editor', 'Reviewer']) # no assigned_group: NOK task.assigned_group = None self.assertFalse(view.can_do_transition('back_in_created2')) self.assertFalse(view.can_do_transition('back_in_to_assign')) # ag ok, no user in group task.assigned_group = get_registry_organizations()[0] groupname = '{}_n_plus_1'.format(task.assigned_group) self.assertFalse(group_has_user(groupname)) self.assertTrue(view.can_do_transition('back_in_created2')) self.assertFalse(view.can_do_transition('back_in_to_assign')) # ag ok, user in group api.group.add_user(groupname=groupname, username='******') self.assertTrue(group_has_user(groupname)) self.assertFalse(view.can_do_transition('back_in_created2')) self.assertTrue(view.can_do_transition('back_in_to_assign')) # we do transition api.content.transition(task, transition='back_in_to_assign') api.content.transition(task, transition='back_in_created') api.content.transition(task, transition='do_to_assign') self.assertEqual(api.content.get_state(task), 'to_assign')
def test_OdmUtilsMethods_can_do_transition1(self): # self.assertEqual(api.content.get_state(self.omail), 'created') view = OdmUtilsMethods(self.omail, self.omail.REQUEST) setRoles(self.portal, TEST_USER_ID, ['Reviewer', 'Manager']) # no treating_groups: NOK self.assertIsNone(self.omail.treating_groups) self.assertFalse(view.can_do_transition('propose_to_n_plus_1')) self.assertFalse(view.can_do_transition('back_to_n_plus_1')) # tg ok, no user in group self.omail.treating_groups = get_registry_organizations()[0] groupname = '{}_n_plus_1'.format(self.omail.treating_groups) api.group.remove_user(groupname=groupname, username='******') self.assertFalse(group_has_user(groupname)) self.assertFalse(view.can_do_transition('propose_to_n_plus_1')) # tg ok, user in group api.group.add_user(groupname=groupname, username='******') self.assertTrue(group_has_user(groupname)) self.assertTrue(view.can_do_transition('propose_to_n_plus_1')) # we do transition api.content.transition(self.omail, transition='propose_to_n_plus_1') createContentInContainer( self.omail, 'dmsommainfile') # add a file so it's possible to do transition api.content.transition(self.omail, transition='propose_to_be_signed') self.assertEqual(api.content.get_state(self.omail), 'to_be_signed') # tg ok, user in group self.assertTrue(view.can_do_transition('back_to_n_plus_1')) # tg ok, no user in group api.group.remove_user(groupname=groupname, username='******') self.assertFalse(group_has_user(groupname)) self.assertFalse(view.can_do_transition('back_to_n_plus_1'))
def setUp(self): self.portal = self.layer['portal'] setRoles(self.portal, TEST_USER_ID, ['Manager']) self.pw = self.portal.portal_workflow self.tw = self.pw['task_workflow'] self.portal.portal_setup.runImportStepFromProfile( 'profile-imio.dms.mail:singles', 'imiodmsmail-task_n_plus_1_wfadaptation', run_dependencies=False) for uid in get_registry_organizations(): groupname = "%s_n_plus_1" % uid if group_has_user(groupname): api.group.remove_user(groupname=groupname, username='******')
def test_group_has_user(self): self.assertFalse(group_has_user('xxx', 'delete')) self.assertFalse(group_has_user('xxx')) # group not found self.assertFalse(group_has_user('abc_group_encoder')) # no user self.assertTrue(group_has_user('abc_group_encoder', 'add')) # we are adding a user api.group.add_user(groupname='abc_group_encoder', username='******') self.assertTrue( group_has_user('abc_group_encoder')) # group has one user self.assertFalse( group_has_user('abc_group_encoder', 'remove')) # we are removing the only one user
def common_tests(self): # check workflow self.assertSetEqual( set(self.omw.states), { 'created', 'scanned', 'proposed_to_n_plus_1', 'to_print', 'to_be_signed', 'sent' }) self.assertSetEqual( set(self.omw.transitions), { 'back_to_creation', 'back_to_agent', 'back_to_scanned', 'back_to_n_plus_1', 'back_to_print', 'back_to_be_signed', 'set_scanned', 'propose_to_n_plus_1', 'set_to_print', 'propose_to_be_signed', 'mark_as_sent' }) self.assertSetEqual( set(self.omw.states['created'].transitions), { 'set_scanned', 'propose_to_n_plus_1', 'set_to_print', 'propose_to_be_signed', 'mark_as_sent' }) self.assertSetEqual(set(self.omw.states['scanned'].transitions), {'back_to_agent', 'mark_as_sent'}) self.assertSetEqual( set(self.omw.states['proposed_to_n_plus_1'].transitions), { 'back_to_creation', 'set_to_print', 'propose_to_be_signed', 'mark_as_sent' }) self.assertSetEqual( set(self.omw.states['to_print'].transitions), {'back_to_creation', 'back_to_n_plus_1', 'propose_to_be_signed'}) self.assertSetEqual( set(self.omw.states['to_be_signed'].transitions), { 'back_to_creation', 'back_to_n_plus_1', 'back_to_print', 'mark_as_sent' }) self.assertSetEqual( set(self.omw.states['sent'].transitions), { 'back_to_be_signed', 'back_to_scanned', 'back_to_creation', 'back_to_n_plus_1' }) # check collection position folder = self.portal['outgoing-mail']['mail-searches'] self.assertEqual(folder.getObjectPosition('searchfor_to_be_signed'), 11) self.assertEqual(folder.getObjectPosition('searchfor_to_print'), 10) self.assertEqual( folder.getObjectPosition('searchfor_proposed_to_n_plus_1'), 9) res = [ dic['v'] for dic in folder['om_treating'].query if dic['i'] == 'review_state' ][0] self.assertIn('to_print', res) self.assertIn('proposed_to_n_plus_1', res) # check dms config view = OdmUtilsMethods(self.omail, self.omail.REQUEST) setRoles(self.portal, TEST_USER_ID, ['Reviewer', 'Manager']) # no treating_groups: NOK self.assertIsNone(self.omail.treating_groups) self.assertFalse(view.can_do_transition('propose_to_n_plus_1')) self.assertFalse(view.can_do_transition('back_to_n_plus_1')) # tg ok, no user in group self.omail.treating_groups = get_registry_organizations()[0] groupname = '{}_n_plus_1'.format(self.omail.treating_groups) api.group.remove_user(groupname=groupname, username='******') self.assertFalse(group_has_user(groupname)) self.assertFalse(view.can_do_transition('propose_to_n_plus_1')) # tg ok, user in group api.group.add_user(groupname=groupname, username='******') self.assertTrue(group_has_user(groupname)) self.assertTrue(view.can_do_transition('propose_to_n_plus_1')) # we do transition api.content.transition(self.omail, transition='propose_to_n_plus_1') createContentInContainer( self.omail, 'dmsommainfile') # add a file so it's possible to do transition api.content.transition(self.omail, transition='set_to_print') self.assertEqual(api.content.get_state(self.omail), 'to_print') # tg ok, user in group self.assertTrue(view.can_do_transition('back_to_n_plus_1')) # tg ok, no user in group api.group.remove_user(groupname=groupname, username='******') self.assertFalse(group_has_user(groupname)) self.assertFalse(view.can_do_transition('back_to_n_plus_1'))
def test_IdmUtilsMethods_can_do_transition2(self): # imail = createContentInContainer(self.portal['incoming-mail'], 'dmsincomingmail') # creation is made earlier otherwise wf_from_to['to'] is again at default value ?????????????? self.assertEqual(api.content.get_state(self.imail), 'created') view = IdmUtilsMethods(self.imail, self.imail.REQUEST) setRoles(self.portal, TEST_USER_ID, ['Reviewer']) # no treating_group: NOK self.assertFalse(view.can_do_transition('propose_to_agent')) # tg ok, following states self.imail.treating_groups = get_registry_organizations()[0] api.portal.set_registry_record(AUC_RECORD, 'no_check') self.assertTrue(view.can_do_transition('propose_to_n_plus_2')) self.assertFalse(view.can_do_transition('propose_to_n_plus_1')) self.assertFalse(view.can_do_transition('propose_to_agent')) # tg ok, following states: no more n_plus_ user groupname2 = '{}_n_plus_2'.format(self.imail.treating_groups) api.group.remove_user(groupname=groupname2, username='******') self.assertFalse(group_has_user(groupname2)) self.assertFalse(view.can_do_transition('propose_to_n_plus_2')) self.assertTrue(view.can_do_transition('propose_to_n_plus_1')) self.assertFalse(view.can_do_transition('propose_to_agent')) groupname1 = '{}_n_plus_1'.format(self.imail.treating_groups) api.group.remove_user(groupname=groupname1, username='******') self.assertFalse(group_has_user(groupname1)) self.assertFalse(view.can_do_transition('propose_to_n_plus_2')) self.assertFalse(view.can_do_transition('propose_to_n_plus_1')) self.assertTrue(view.can_do_transition('propose_to_agent')) # tg ok, assigner_user nok, auc ok api.portal.set_registry_record(AUC_RECORD, 'n_plus_1') self.assertFalse( view.can_do_transition('propose_to_n_plus_1')) # no user self.assertTrue(view.can_do_transition( 'propose_to_agent')) # ok because no n+1 level # tg ok, assigner_user nok, auc nok api.portal.set_registry_record(AUC_RECORD, 'mandatory') self.assertFalse(view.can_do_transition('propose_to_agent')) # tg ok, state ok, assigner_user ok, auc nok self.imail.assigned_user = '******' self.assertTrue(view.can_do_transition('propose_to_agent')) # WE DO TRANSITION api.group.add_user(groupname=groupname2, username='******') api.content.transition(self.imail, 'propose_to_n_plus_2') self.assertEqual(api.content.get_state(self.imail), 'proposed_to_n_plus_2') # tg ok, state ok, assigner_user nok, auc nok self.imail.assigned_user = None self.assertFalse(view.can_do_transition('propose_to_n_plus_1')) self.assertFalse(view.can_do_transition('propose_to_agent')) self.assertTrue(view.can_do_transition('back_to_creation')) self.assertTrue(view.can_do_transition('back_to_manager')) # WE DO TRANSITION api.group.add_user(groupname=groupname1, username='******') api.content.transition(self.imail, 'propose_to_n_plus_1') self.assertEqual(api.content.get_state(self.imail), 'proposed_to_n_plus_1') self.assertFalse(view.can_do_transition('propose_to_agent')) self.assertTrue(view.can_do_transition('back_to_n_plus_2')) self.assertFalse(view.can_do_transition('back_to_creation')) self.assertFalse(view.can_do_transition('back_to_manager')) # we remove n+2 users api.group.remove_user(groupname=groupname2, username='******') self.assertFalse(view.can_do_transition('back_to_n_plus_2')) self.assertTrue(view.can_do_transition('back_to_creation')) self.assertTrue(view.can_do_transition('back_to_manager')) # WE DO TRANSITION self.imail.assigned_user = '******' api.content.transition(self.imail, 'propose_to_agent') self.assertEqual(api.content.get_state(self.imail), 'proposed_to_agent') self.assertTrue(view.can_do_transition('back_to_n_plus_1')) self.assertFalse(view.can_do_transition('back_to_n_plus_2')) self.assertFalse(view.can_do_transition('back_to_creation')) self.assertFalse(view.can_do_transition('back_to_manager')) # we remove n+1 users api.group.remove_user(groupname=groupname1, username='******') api.group.add_user(groupname=groupname2, username='******') self.assertTrue(view.can_do_transition('back_to_n_plus_2')) self.assertFalse(view.can_do_transition('back_to_n_plus_1')) self.assertFalse(view.can_do_transition('back_to_creation')) self.assertFalse(view.can_do_transition('back_to_manager'))