示例#1
0
 def test_process(self):
     session = Session(session_uid="vettel2021")
     session.process_lap_in_f1laps = MagicMock()
     packet = get_packet_mock()
     packet.classificationData = [
         MagicMock(position=2, resultStatus=3, points=21)
     ]
     session = FinalClassificationPacket().process(packet, session)
     self.assertEqual(session.finish_position, 2)
     self.assertEqual(session.result_status, 3)
     self.assertEqual(session.points, 21)
     session.process_lap_in_f1laps.assert_called_with()
示例#2
0
 def test_lap_new_with_old_without_sector_2(self):
     session = Session(session_uid="vettel2021")
     session.lap_number_current = 1
     session.lap_list = {
         1: {
             "sector_1_time_ms": 0,
             "sector_2_time_ms": 0,
             "sector_3_time_ms": 30002,
             "lap_number": 1,
             "car_race_position": 1,
             "pit_status": 1,
             'is_valid': True
         }
     }
     session.process_lap_in_f1laps = MagicMock()
     packet = get_packet_mock()
     packet.lapData = [
         MagicMock(currentLapNum=2,
                   currentLapTime=80,
                   sector1TimeInMS=10002,
                   sector2TimeInMS=20002,
                   pitStatus=2,
                   carPosition=4,
                   lastLapTime=30.002)
     ]
     session = LapPacket().process(packet, session)
     self.assertEqual(
         session.lap_list, {
             1: {
                 "sector_1_time_ms": 0,
                 "sector_2_time_ms": 0,
                 "sector_3_time_ms": 30002,
                 "lap_number": 1,
                 "car_race_position": 1,
                 "pit_status": 1,
                 'is_valid': True
             },
             2: {
                 'sector_1_time_ms': 10002,
                 'sector_2_time_ms': 20002,
                 'sector_3_time_ms': 49996,
                 'lap_number': 2,
                 'car_race_position': 4,
                 'pit_status': 2,
                 'is_valid': True
             }
         })
     self.assertEqual(session.lap_number_current, 2)
     session.process_lap_in_f1laps.assert_not_called()
示例#3
0
class SessionAPITests(TestCase):
    def setUp(self):
        self.session = Session(session_uid="vettel2021")
        self.session.team_id = 1
        self.session.track_id = 5
        self.session.lap_number_current = 2
        self.session.lap_list = {
            1: {
                "sector_1_time_ms": 10001,
                "sector_2_time_ms": 20001,
                "sector_3_time_ms": 30001,
                "lap_number": 1,
                "car_race_position": 1,
                "pit_status": 0
            }
        }

    @patch('receiver.f12020.session.F1LapsAPI.lap_create')
    def test_single_lap_success(self, mock_lap_create_api):
        # set session_type to time_trial to test single lap
        self.session.session_type = 12
        mock_lap_create_api.return_value = MagicMock(status_code=201)
        self.assertEqual(self.session.process_lap_in_f1laps(1), True)

    @patch('receiver.f12020.session.F1LapsAPI.lap_create')
    def test_single_lap_fail(self, mock_lap_create_api):
        # set session_type to time_trial to test single lap
        self.session.session_type = 12
        mock_lap_create_api.return_value = MagicMock(
            status_code=404, content=json.dumps({"error": "it didnt work"}))
        self.assertEqual(self.session.process_lap_in_f1laps(1), False)

    @patch('receiver.f12020.session.F1LapsAPI.session_create')
    def test_session_create_success(self, mock_session_create_api):
        # set session_type to race to test session
        self.session.session_type = 10
        # make sure we have no f1laps id in the session yet
        self.session.f1_laps_session_id = None
        mock_session_create_api.return_value = MagicMock(
            status_code=201, content=json.dumps({"id": "astonmartin4tw"}))
        self.assertEqual(self.session.process_lap_in_f1laps(1), True)
        self.assertEqual(self.session.f1_laps_session_id, "astonmartin4tw")

    @patch('receiver.f12020.session.F1LapsAPI.session_update')
    def test_session_update_success(self, mock_session_update_api):
        # set session_type to race to test session
        self.session.session_type = 10
        # make sure we have a f1laps id in the session
        self.session.f1_laps_session_id = "astonmartin4tw"
        mock_session_update_api.return_value = MagicMock(status_code=200)
        self.assertEqual(self.session.process_lap_in_f1laps(1), True)

    @patch('receiver.f12020.session.F1LapsAPI.session_update')
    def test_session_update_error(self, mock_session_update_api):
        # set session_type to race to test session
        self.session.session_type = 10
        # make sure we have a f1laps id in the session
        self.session.f1_laps_session_id = "astonmartin4tw"
        mock_session_update_api.return_value = MagicMock(
            status_code=404, content=json.dumps({"error": "it didnt work"}))
        self.assertEqual(self.session.process_lap_in_f1laps(1), False)

    @patch('receiver.f12020.session.F1LapsAPI.session_update')
    @patch('receiver.f12020.session.F1LapsAPI.session_list')
    @patch('receiver.f12020.session.F1LapsAPI.session_create')
    def test_session_create_error_list_success_update(self,
                                                      mock_session_create_api,
                                                      mock_session_list_api,
                                                      mock_session_update_api):
        # set session_type to race to test session
        self.session.session_type = 10
        # make sure we don't have a f1laps id in the session yet
        self.session.f1_laps_session_id = None
        mock_session_create_api.return_value = MagicMock(
            status_code=400, content=json.dumps({"error": "already exists"}))
        mock_session_list_api.return_value = MagicMock(
            status_code=200,
            content=json.dumps({"results": [{
                "id": "astonmartin4tw"
            }]}))
        mock_session_update_api.return_value = MagicMock(status_code=200)
        self.assertEqual(self.session.process_lap_in_f1laps(1), True)
        self.assertEqual(self.session.f1_laps_session_id, "astonmartin4tw")

    @patch('receiver.f12020.session.F1LapsAPI.session_list')
    @patch('receiver.f12020.session.F1LapsAPI.session_create')
    def test_session_create_error_list_error(self, mock_session_create_api,
                                             mock_session_list_api):
        # set session_type to race to test session
        self.session.session_type = 10
        # make sure we don't have a f1laps id in the session yet
        self.session.f1_laps_session_id = None
        mock_session_create_api.return_value = MagicMock(
            status_code=400, content=json.dumps({"error": "already exists"}))
        mock_session_list_api.return_value = MagicMock(status_code=200,
                                                       content=json.dumps(
                                                           {"results": []}))
        self.assertEqual(self.session.process_lap_in_f1laps(1), False)

    @patch('receiver.f12020.session.F1LapsAPI.session_create')
    def test_session_create_error_401(self, mock_session_create_api):
        # set session_type to race to test session
        self.session.session_type = 10
        # make sure we don't have a f1laps id in the session yet
        self.session.f1_laps_session_id = None
        mock_session_create_api.return_value = MagicMock(
            status_code=401, content=json.dumps({"error": "invalid token"}))
        self.assertEqual(self.session.process_lap_in_f1laps(1), False)