class ResetActionTestCase(unittest.TestCase): def setUp(self): self.env = EnvironmentStub(default_data=True) self.perm_sys = PermissionSystem(self.env) self.ctlr = TicketSystem(self.env).action_controllers[0] self.req1 = Mock(authname='user1', args={}, perm=PermissionCache(self.env, 'user1')) self.req2 = Mock(authname='user2', args={}, perm=PermissionCache(self.env, 'user2')) self.ticket = Ticket(self.env) self.ticket['status'] = 'invalid' self.ticket.insert() def tearDown(self): self.env.reset_db() def _reload_workflow(self): self.ctlr.actions = self.ctlr.get_all_actions() def test_default_reset_action(self): """Default reset action.""" self.perm_sys.grant_permission('user2', 'TICKET_ADMIN') self._reload_workflow() actions1 = self.ctlr.get_ticket_actions(self.req1, self.ticket) actions2 = self.ctlr.get_ticket_actions(self.req2, self.ticket) chgs2 = self.ctlr.get_ticket_changes(self.req2, self.ticket, '_reset') self.assertEqual(1, len(actions1)) self.assertNotIn((0, '_reset'), actions1) self.assertEqual(2, len(actions2)) self.assertIn((0, '_reset'), actions2) self.assertEqual('new', chgs2['status']) def test_custom_reset_action(self): """Custom reset action in [ticket-workflow] section.""" config = self.env.config['ticket-workflow'] config.set('_reset', '-> review') config.set('_reset.operations', 'reset_workflow') config.set('_reset.permissions', 'TICKET_BATCH_MODIFY') config.set('_reset.default', 2) self.perm_sys.grant_permission('user2', 'TICKET_BATCH_MODIFY') self._reload_workflow() actions1 = self.ctlr.get_ticket_actions(self.req1, self.ticket) actions2 = self.ctlr.get_ticket_actions(self.req2, self.ticket) chgs2 = self.ctlr.get_ticket_changes(self.req2, self.ticket, '_reset') self.assertEqual(1, len(actions1)) self.assertNotIn((2, '_reset'), actions1) self.assertEqual(2, len(actions2)) self.assertIn((2, '_reset'), actions2) self.assertEqual('review', chgs2['status'])
class ResetActionTestCase(unittest.TestCase): def setUp(self): self.env = EnvironmentStub(default_data=True) self.perm_sys = PermissionSystem(self.env) self.ctlr = TicketSystem(self.env).action_controllers[0] self.req1 = Mock(authname='user1', args={}, perm=PermissionCache(self.env, 'user1')) self.req2 = Mock(authname='user2', args={}, perm=PermissionCache(self.env, 'user2')) self.ticket = Ticket(self.env) self.ticket['status'] = 'invalid' self.ticket.insert() def tearDown(self): self.env.reset_db() def _reload_workflow(self): self.ctlr.actions = self.ctlr.get_all_actions() def test_default_reset_action(self): """Default reset action.""" self.perm_sys.grant_permission('user2', 'TICKET_ADMIN') self._reload_workflow() actions1 = self.ctlr.get_ticket_actions(self.req1, self.ticket) actions2 = self.ctlr.get_ticket_actions(self.req2, self.ticket) chgs2 = self.ctlr.get_ticket_changes(self.req2, self.ticket, '_reset') self.assertEqual(1, len(actions1)) self.assertNotIn((0, '_reset'), actions1) self.assertEqual(2, len(actions2)) self.assertIn((0, '_reset'), actions2) self.assertEqual('new', chgs2['status']) def test_custom_reset_action(self): """Custom reset action in [ticket-workflow] section.""" config = self.env.config['ticket-workflow'] config.set('_reset', '-> review') config.set('_reset.operations', 'reset_workflow') config.set('_reset.permissions', 'TICKET_BATCH_MODIFY') config.set('_reset.default', 2) self.perm_sys.grant_permission('user2', 'TICKET_BATCH_MODIFY') self._reload_workflow() actions1 = self.ctlr.get_ticket_actions(self.req1, self.ticket) actions2 = self.ctlr.get_ticket_actions(self.req2, self.ticket) chgs2 = self.ctlr.get_ticket_changes(self.req2, self.ticket, '_reset') self.assertEqual(1, len(actions1)) self.assertNotIn((2, '_reset'), actions1) self.assertEqual(2, len(actions2)) self.assertIn((2, '_reset'), actions2) self.assertEqual('review', chgs2['status'])
class ResetActionTestCase(unittest.TestCase): def setUp(self): self.env = EnvironmentStub(default_data=True) self.perm_sys = PermissionSystem(self.env) self.ctlr = TicketSystem(self.env).action_controllers[0] self.req1 = MockRequest(self.env, authname='user1') self.req2 = MockRequest(self.env, authname='user2') self.ticket = insert_ticket(self.env, status='invalid') def tearDown(self): self.env.reset_db() def _reload_workflow(self): self.ctlr.actions = self.ctlr.get_all_actions() def test_default_reset_action(self): """Default reset action.""" self.perm_sys.grant_permission('user2', 'TICKET_ADMIN') self._reload_workflow() actions1 = self.ctlr.get_ticket_actions(self.req1, self.ticket) actions2 = self.ctlr.get_ticket_actions(self.req2, self.ticket) chgs2 = self.ctlr.get_ticket_changes(self.req2, self.ticket, '_reset') self.assertEqual(1, len(actions1)) self.assertNotIn((0, '_reset'), actions1) self.assertEqual(2, len(actions2)) self.assertIn((0, '_reset'), actions2) self.assertEqual('new', chgs2['status']) def test_default_reset_action_without_new_state(self): """Default reset action not available when no new state.""" self.perm_sys.grant_permission('user2', 'TICKET_ADMIN') config = self.env.config # Replace 'new' state with 'untriaged' config.set('ticket-workflow', 'create', '<none> -> untriaged') config.set('ticket-workflow', 'accept', 'untriaged,assigned,accepted,reopened -> accepted') config.set('ticket-workflow', 'resolve', 'untriaged,assigned,accepted,reopened -> closed') config.set('ticket-workflow', 'reassign', 'untriaged,assigned,accepted,reopened -> assigned') self._reload_workflow() actions = self.ctlr.get_ticket_actions(self.req2, self.ticket) self.assertEqual(1, len(actions)) self.assertNotIn((0, '_reset'), actions) def test_custom_reset_action(self): """Custom reset action in [ticket-workflow] section.""" config = self.env.config['ticket-workflow'] config.set('_reset', '-> review') config.set('_reset.operations', 'reset_workflow') config.set('_reset.permissions', 'TICKET_BATCH_MODIFY') config.set('_reset.default', 2) self.perm_sys.grant_permission('user2', 'TICKET_BATCH_MODIFY') self._reload_workflow() actions1 = self.ctlr.get_ticket_actions(self.req1, self.ticket) actions2 = self.ctlr.get_ticket_actions(self.req2, self.ticket) chgs2 = self.ctlr.get_ticket_changes(self.req2, self.ticket, '_reset') self.assertEqual(1, len(actions1)) self.assertNotIn((2, '_reset'), actions1) self.assertEqual(2, len(actions2)) self.assertIn((2, '_reset'), actions2) self.assertEqual('review', chgs2['status'])