示例#1
0
    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'))
示例#2
0
    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'))