示例#1
0
    def test_create_trip_bad_date_format(self, start_date):
        # Arrange
        user = utils.create_and_save_user()
        trip_dict = {
            'destination': 'Country1',
            'start_date': start_date,
            'end_date': '10/12/2017',
            'comment': 'Very Nice',
            'user_id': user.id
        }
        token = user.generate_rest_auth_token()
        headers = {'Authorization': utils.encode_info_token_http_auth(token)}

        # Act
        response = self.client.post('/api/v1/trips/',
                                    data=json.dumps(trip_dict),
                                    headers=headers,
                                    content_type='application/json')
        data = json.loads(utils.decode_data(response.data))

        # Assert
        self.assertEqual(response.status_code, 400)
        self.assertIn(
            f"time data '{start_date}' does not match format '{tp_utils.DATE_FORMAT}'",
            data['error'])
示例#2
0
    def test_get_itinerary_for_next_month(self):
        # Arrange
        user_admin = utils.create_user_admin()
        headers = {
            'Authorization':
            utils.encode_info_token_http_auth(
                user_admin.generate_rest_auth_token())
        }
        for _ in range(5):
            today = datetime.date.today()
            if today.month == 12:
                next_month = datetime.date(today.year + 1, 1, 1)
            else:
                next_month = datetime.date(today.year, today.month + 1, 1)
            next_month = next_month.strftime("%d/%m/%Y")
            utils.create_and_save_trip('TEST', next_month, next_month, 'TEST',
                                       user_admin)

        for _ in range(5):
            today = datetime.date.today().strftime("%d/%m/%Y")
            utils.create_and_save_trip('TEST', today, today, 'TEST',
                                       user_admin)

        # Act
        response = self.client.get('/api/v1/trips/next_month/',
                                   headers=headers)

        # Assert
        self.assertEqual(response.status_code, 200)
        data = json.loads(utils.decode_data(response.data))

        self.assertEqual(len(data), 5)
示例#3
0
    def test_create_trip(self):
        # Arrange
        user = utils.create_and_save_user()
        trip_dict = {
            'destination': 'Country1',
            'start_date': '01/01/2017',
            'end_date': '01/02/2017',
            'comment': 'Very Nice',
            'user_id': user.id
        }
        token = user.generate_rest_auth_token()
        headers = {'Authorization': utils.encode_info_token_http_auth(token)}

        # Act
        response = self.client.post('/api/v1/trips/',
                                    data=json.dumps(trip_dict),
                                    headers=headers,
                                    content_type='application/json')

        # Assert
        self.assertEqual(response.status_code, 201)
        trip = Trip.query.get(
            json.loads(utils.decode_data(response.data))['id'])
        self.assertEqual(trip.start_date, datetime.date(2017, 1, 1))
        self.assertEqual(trip.end_date, datetime.date(2017, 2, 1))
示例#4
0
    def test_filter_trips_by_end_date(self):
        # Arrange
        user_admin = utils.create_user_admin()
        headers = {
            'Authorization':
            utils.encode_info_token_http_auth(
                user_admin.generate_rest_auth_token())
        }
        #  Dict used to insert records. Key is the destination, value is how many
        #  records to insert
        records_to_insert = {'01/02/2016': 2, '02/02/2016': 3, '03/02/2016': 1}
        for end_date, count in records_to_insert.items():
            for _ in range(count):
                utils.create_and_save_trip('test dest', '01/02/2016',
                                           '{}'.format(end_date), 'Test trip',
                                           user_admin)

        for end_date, count in records_to_insert.items():
            query = {'end_date': end_date}

            # Act
            response = self.client.post('/api/v1/trips/filter/',
                                        data=json.dumps(query),
                                        headers=headers,
                                        content_type='application/json')

            # Assert
            self.assertEqual(response.status_code, 200)
            data = json.loads(utils.decode_data(response.data))
            self.assertEqual(len(data), count)
示例#5
0
    def test_list_trips_admin_user_future_and_past_trips(self):
        # Arrange
        user_admin = utils.create_user_admin()

        for day in [1, 2, 3]:
            utils.create_and_save_trip('D{}'.format(day),
                                       '{}/1/2016'.format(day),
                                       '{}/02/2016'.format(day), 'Test trip',
                                       user_admin)

        for day in [1, 2, 3]:
            utils.create_and_save_trip('D{}'.format(day),
                                       '{}/1/2017'.format(day),
                                       '{}/02/2017'.format(day), 'Test trip',
                                       user_admin)

        headers = {
            'Authorization':
            utils.encode_info_token_http_auth(
                user_admin.generate_rest_auth_token())
        }

        today = datetime.date(2016, 12, 20)

        # Act
        with mock.patch('datetime.date', utils.MockDate):
            utils.MockDate.today = classmethod(lambda cls: today)
            response = self.client.get('/api/v1/trips/',
                                       headers=headers,
                                       content_type="application/json")

        # Assert
        self.assertEqual(response.status_code, 200)
        date_order = [
            '03/01/2017', '02/01/2017', '01/01/2017', '03/01/2016',
            '02/01/2016', '01/01/2016'
        ]
        data = json.loads(utils.decode_data(response.data))

        for i in range(3):
            self.assertTrue(data[i].get('days_left'))
            self.assertEqual(data[i]['start_date'], date_order[i])

        for i in range(3, 6):
            self.assertFalse(data[i].get('days_left'))
            self.assertEqual(data[i]['start_date'], date_order[i])
示例#6
0
    def test_create_trip_non_existent_user_id(self):
        # Arrange
        user_admin = utils.create_user_admin('u1', 'pu1')
        trip_dict = {
            'destination': 'Country1',
            'start_date': '01/01/2017',
            'end_date': '01/02/2017',
            'comment': 'Very Nice',
            'user_id': '5'
        }
        token = user_admin.generate_rest_auth_token()
        headers = {'Authorization': utils.encode_info_token_http_auth(token)}

        # Act
        response = self.client.post('/api/v1/trips/',
                                    data=json.dumps(trip_dict),
                                    headers=headers,
                                    content_type='application/json')

        # Assert
        self.assertEqual(response.status_code, 404)