def test_status(self): """ Ensure that the proper status is set for a group action based on it's included actions. """ # After creation, status should be queued group_action = Database.create_group_action() self.assertEqual(group_action.get_status(), GROUP_ACTION_STATUSES.get('queued', 'queued')) # Send to a session, status should be in progress session = Database.create_session() group_action.actions[0].assign_to(session.session_id) self.assertEqual( group_action.get_status(), GROUP_ACTION_STATUSES.get('in progress', 'in progress')) # Submit a response to all actions, status should be success for action in group_action.actions: action.assign_to(session.session_id) response = Database.create_response() action.submit_response(response) self.assertEqual(group_action.get_status(), GROUP_ACTION_STATUSES.get('success', 'success')) # Create a new group action, make all actions stale. Status should be stale group_action = Database.create_group_action() for action in group_action.actions: action.queue_time = 0 action.save() self.assertEqual(group_action.get_status(), GROUP_ACTION_STATUSES.get('stale', 'stale')) # Have a session check in, status should update to in progress group_action.actions[0].assign_to(session.session_id) self.assertEqual( group_action.get_status(), GROUP_ACTION_STATUSES.get('in progress', 'in progress')) # Submit a response, status should be mixed success response = Database.create_response() group_action.actions[0].submit_response(response) self.assertEqual( group_action.get_status(), GROUP_ACTION_STATUSES.get('mixed success', 'mixed success')) # Set all actions to failed. Status should be failed. group_action = Database.create_group_action() session = Database.create_session(None, 0) for action in group_action.actions: action.assign_to(session.session_id) self.assertEqual(group_action.get_status(), GROUP_ACTION_STATUSES.get('failed', 'failed')) # Create a new group action, and cancel it. Status should be cancelled group_action = Database.create_group_action() group_action.cancel() self.assertEqual(group_action.get_status(), GROUP_ACTION_STATUSES.get('cancelled', 'cancelled'))
def test_status_pass(self): """ This test will attempt to see if the action is assigned the correct statuses based on it's session. """ action1 = Database.create_action() self.assertIsNone(action1.session_id) self.assertEqual(action1.status, ACTION_STATUSES.get('queued')) action1.cancelled = True self.assertEqual(action1.status, ACTION_STATUSES.get('cancelled')) action1.cancelled = False action1.queue_time = time.time() - (ACTION_STALE_THRESHOLD+1) action1.save() self.assertEqual(action1.status, ACTION_STATUSES.get('stale')) session1 = Database.create_session() action1.assign_to(session1.session_id) self.assertEqual(action1.status, ACTION_STATUSES.get('sent')) Database.missing_session(session1) self.assertEqual(action1.status, ACTION_STATUSES.get('failing')) session1.timestamp = 0 session1.save() self.assertEqual(action1.status, ACTION_STATUSES.get('failed')) session1.timestamp = time.time() session1.save() response = Database.create_response(None, None, True) action1.submit_response(response) self.assertEqual(action1.status, ACTION_STATUSES.get('error')) response.error = False action1.submit_response(response) self.assertEqual(action1.status, ACTION_STATUSES.get('complete'))