def testGetReservationsForCountryAndCityDestinationWithSomeReservationsReturnsAListWithThem( self, mockResponse): setUpDatabaseContent( self.connection, self.auxFilesDirectory + 'flights_reservations.sql') setUpMockResponse( mockResponse, 200, self.auxFilesDirectory + 'responseMultipleReservations.json') expectedReservations = [{ "date": "2020-01-11T18:24:01", "reservationId": "a044ec7d-d1f1-4098-8b76-d892e48b0321" }, { "date": "2019-11-01T14:51:16", "reservationId": "e169ba40-8601-4193-a79e-0e2b1fce1f6f" }, { "date": "2019-10-28T05:16:10", "reservationId": "963adb3a-1cdd-42ac-978a-9e495ab564e7" }] reservations = self.reservationsManager.getReservationsForDestination( 'Argentina', 'Buenos Aires') self.assertEqual(reservations, expectedReservations)
def testGetHotelsInCountryDestinationWithSomeHotelsReturnsAListWithThem( self, mockResponse): setUpMockResponse( mockResponse, 200, self.auxFilesDirectory + 'responseMultipleHotelsArgentina.json') expectedHotels = [{ "name": "Sheraton Buenos Aires Hotel & Convention Center", "address": "San Martín 1225/1275 (esq. Av. Leandro N. Alem), 1104 Buenos Aires, Buenos Aires F.D., Argentina" }, { "name": "Gran Hotel Guaraní", "address": "Mendoza 970 (e/ Junin y Hipólito Yrigoyen), W3400CCL Corrientes, Corrientes, Argentina" }, { "name": "Four Seasons Hotel Buenos Aires", "address": "Posadas 1086/88 (esq. Cerrito), C1011ABB Buenos Aires, Buenos Aires F.D., Argentina" }, { "name": "Hotel Madero", "address": "Rosario Vera Peñaloza 360 (e/ Olga Cossettini y Juana Manso), C1107CLA Buenos Aires, Buenos Aires F.D., Argentina" }, { "name": "Diplomatic Hotel", "address": "Av. Belgrano 1041, 5500 Mendoza, Mendoza, Argentina" }] hotels = self.hotelsManager.getHotelsInDestination('Argentina') self.assertEqual(hotels, expectedHotels)
def testGetHotelsInCountryAndCityDestinationWithSomeHotelsReturnsAListThatIncludesThem( self, mockResponse): setUpMockResponse( mockResponse, 200, self.auxFilesDirectory + 'responseMultipleHotelsBuenosAires.json') expectedHotels = [{ "name": "Sheraton Buenos Aires Hotel & Convention Center", "address": "San Martín 1225/1275 (esq. Av. Leandro N. Alem), 1104 Buenos Aires, Buenos Aires F.D., Argentina" }, { "name": "Four Seasons Hotel Buenos Aires", "address": "Posadas 1086/88 (esq. Cerrito), C1011ABB Buenos Aires, Buenos Aires F.D., Argentina" }, { "name": "Hotel Madero", "address": "Rosario Vera Peñaloza 360 (e/ Olga Cossettini y Juana Manso), C1107CLA Buenos Aires, Buenos Aires F.D., Argentina" }] hotels = self.hotelsManager.getHotelsInDestination( 'Argentina', 'Buenos Aires') self.assertEqual(hotels, expectedHotels)
def testGetHotelsInCountryDestinationWithoutHotelsReturnsAnEmptyList( self, mockResponse): setUpMockResponse(mockResponse, 200, self.auxFilesDirectory + 'responseEmptyHotels.json') expectedHotels = [] hotels = self.hotelsManager.getHotelsInDestination('France') self.assertEqual(hotels, expectedHotels)
def testGetHotelsInDestinationRaisesHTTPErrorWhenSourceDoesNotRespond( self, mockResponse): setUpMockResponse( mockResponse, 200, self.auxFilesDirectory + 'responseInternalServerErrorHotels.json') self.assertRaises(exceptions.HTTPError, self.hotelsManager.getHotelsInDestination, "Argentina", "Buenos Aires")
def testGetHotelsInCountryAndCityDestinationWithInvalidCityRaisesValueError( self, mockResponse): setUpMockResponse( mockResponse, 200, self.auxFilesDirectory + 'responseInvalidInputHotels.json') self.assertRaises(ValueError, self.hotelsManager.getHotelsInDestination, "Argentina", "invalidCity")
def testFetchReservationsFromSourceAndSaveLocallyStoresAllReservations( self, mockResponse): setUpMockResponse( mockResponse, 200, self.auxFilesDirectory + 'responseMultipleReservations.json') expectedNumberOfStoredReservations = 23 self.reservationsManager.fetchReservationsFromSourceAndSaveLocally() result = self.cursor.execute("SELECT * FROM `flights_reservations`") records = self.cursor.fetchall() numberOfStoredReservations = self.cursor.rowcount self.assertEqual(numberOfStoredReservations, expectedNumberOfStoredReservations)
def testGetReservationsForCountryDestinationWithoutReservationsReturnsAnEmptyList( self, mockResponse): setUpDatabaseContent( self.connection, self.auxFilesDirectory + 'flights_reservations.sql') setUpMockResponse( mockResponse, 200, self.auxFilesDirectory + 'responseMultipleReservations.json') expectedReservations = [] reservations = self.reservationsManager.getReservationsForDestination( 'France') self.assertEqual(reservations, expectedReservations)
def testGetReservationsForCountryDestinationWithSomeReservationsReturnsAListWithThem( self, mockResponse): setUpDatabaseContent( self.connection, self.auxFilesDirectory + 'flights_reservations.sql') setUpMockResponse( mockResponse, 200, self.auxFilesDirectory + 'responseMultipleReservations.json') expectedReservations = [{ "date": "2020-01-12T19:15:39", "reservationId": "0a949eed-b861-48a3-9c54-4d8599858e75" }, { "date": "2020-01-11T18:24:01", "reservationId": "a044ec7d-d1f1-4098-8b76-d892e48b0321" }, { "date": "2019-12-16T11:45:38", "reservationId": "1a27702a-1183-483f-87d9-34e88432efae" }, { "date": "2019-11-21T22:16:55", "reservationId": "370ad35e-5ab6-4925-8e42-ae8eef4dc73c" }, { "date": "2019-11-11T08:11:26", "reservationId": "595d932f-586f-43fa-8fdb-2c2ec6175768" }, { "date": "2019-11-01T14:51:16", "reservationId": "e169ba40-8601-4193-a79e-0e2b1fce1f6f" }, { "date": "2019-10-28T05:16:10", "reservationId": "963adb3a-1cdd-42ac-978a-9e495ab564e7" }] reservations = self.reservationsManager.getReservationsForDestination( 'Argentina') self.assertEqual(reservations, expectedReservations)
def testFetchReservationsFromSourceAndSaveLocallyStoresReservationDataCorrectly( self, mockResponse): setUpMockResponse( mockResponse, 200, self.auxFilesDirectory + 'responseSingleReservation.json') expectedStoredReservation = ('dda0fbff-65e3-43a8-bae8-18acb2ee09ee', 'China', 'Hong Kong', '2019-11-15 16:58:28') self.reservationsManager.fetchReservationsFromSourceAndSaveLocally() result = self.cursor.execute( "SELECT `reservation_id`, `country`, `city`, `date` FROM `flights_reservations` WHERE `reservation_id` = %s", ('dda0fbff-65e3-43a8-bae8-18acb2ee09ee', )) record = self.cursor.fetchone() storedReservation = (record[0], record[1], record[2], record[3].strftime('%Y-%m-%d %H:%M:%S')) self.assertEqual(storedReservation, expectedStoredReservation)
def testApiWorksCorrectlyWithCountryAndCityAsArguments(self, mockVenuesAPIResponse, mockReservationsAPIResponse): setUpMockResponse(mockReservationsAPIResponse, 200, self.auxFilesDirectory + 'responseMultipleReservations.json') setUpMockResponse(mockVenuesAPIResponse, 200, self.auxFilesDirectory + 'responseMultipleHotelsBuenosAires.json') expectedStatusCode = 200 expectedResponse = { 'hotels' : [ {"name": "Sheraton Buenos Aires Hotel & Convention Center", "address": "San Martín 1225/1275 (esq. Av. Leandro N. Alem), 1104 Buenos Aires, Buenos Aires F.D., Argentina"}, {"name": "Four Seasons Hotel Buenos Aires", "address": "Posadas 1086/88 (esq. Cerrito), C1011ABB Buenos Aires, Buenos Aires F.D., Argentina"}, {"name": "Hotel Madero", "address": "Rosario Vera Peñaloza 360 (e/ Olga Cossettini y Juana Manso), C1107CLA Buenos Aires, Buenos Aires F.D., Argentina"} ], 'reservations' : [ {"date": "2020-01-11T18:24:01", "reservationId": "a044ec7d-d1f1-4098-8b76-d892e48b0321"}, {"date": "2019-11-01T14:51:16", "reservationId": "e169ba40-8601-4193-a79e-0e2b1fce1f6f"}, {"date": "2019-10-28T05:16:10", "reservationId": "963adb3a-1cdd-42ac-978a-9e495ab564e7"} ] } response = self.api.get('/recomendationSystem/Argentina/Buenos Aires/') self.assertEqual(response.status_code, expectedStatusCode) self.assertEqual(response.json, expectedResponse)
def testApiWorksCorrectlyOnlyWithCountryAsArgument(self, mockVenuesAPIResponse, mockReservationsAPIResponse): setUpMockResponse(mockReservationsAPIResponse, 200, self.auxFilesDirectory + 'responseMultipleReservations.json') setUpMockResponse(mockVenuesAPIResponse, 200, self.auxFilesDirectory + 'responseMultipleHotelsArgentina.json') expectedStatusCode = 200 expectedResponse = { 'hotels' : [ {"address": "San Martín 1225/1275 (esq. Av. Leandro N. Alem), 1104 Buenos Aires, Buenos Aires F.D., Argentina", "name": "Sheraton Buenos Aires Hotel & Convention Center"}, {"address": "Mendoza 970 (e/ Junin y Hipólito Yrigoyen), W3400CCL Corrientes, Corrientes, Argentina", "name": "Gran Hotel Guaraní"}, {"address": "Posadas 1086/88 (esq. Cerrito), C1011ABB Buenos Aires, Buenos Aires F.D., Argentina", "name": "Four Seasons Hotel Buenos Aires"}, {"address": "Rosario Vera Peñaloza 360 (e/ Olga Cossettini y Juana Manso), C1107CLA Buenos Aires, Buenos Aires F.D., Argentina", "name": "Hotel Madero"}, {"address": "Av. Belgrano 1041, 5500 Mendoza, Mendoza, Argentina", "name": "Diplomatic Hotel"} ], 'reservations' : [ {"date": "2020-01-12T19:15:39", "reservationId": "0a949eed-b861-48a3-9c54-4d8599858e75"}, {"date": "2020-01-11T18:24:01", "reservationId": "a044ec7d-d1f1-4098-8b76-d892e48b0321"}, {"date": "2019-11-11T08:11:26", "reservationId": "595d932f-586f-43fa-8fdb-2c2ec6175768"}, {"date": "2019-11-01T14:51:16", "reservationId": "e169ba40-8601-4193-a79e-0e2b1fce1f6f"}, {"date": "2019-10-28T05:16:10", "reservationId": "963adb3a-1cdd-42ac-978a-9e495ab564e7"} ] } response = self.api.get('/recomendationSystem/Argentina/') self.assertEqual(response.status_code, expectedStatusCode) self.assertDictEqual(response.json, expectedResponse)
def testApiRespondsWith500StatusWhenOtherErrorIsDetected(self, mockReservationsAPIResponse): setUpMockResponse(mockReservationsAPIResponse, 500, None, Exception) expectedStatusCode = 500 response = self.api.get('/recomendationSystem/Argentina/') self.assertEqual(response.status_code, expectedStatusCode)
def testApiRespondsWith400StatusWhenValueErrorIsDetected(self, mockReservationsAPIResponse): setUpMockResponse(mockReservationsAPIResponse, 400, None, ValueError) expectedStatusCode = 400 response = self.api.get('/recomendationSystem/invalidCountry/Buenos Aires/') self.assertEqual(response.status_code, expectedStatusCode)