Example #1
0
    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)
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
    def testGetHotelsInCountryDestinationWithoutHotelsReturnsAnEmptyList(
            self, mockResponse):
        setUpMockResponse(mockResponse, 200,
                          self.auxFilesDirectory + 'responseEmptyHotels.json')
        expectedHotels = []
        hotels = self.hotelsManager.getHotelsInDestination('France')

        self.assertEqual(hotels, expectedHotels)
Example #5
0
    def testGetHotelsInDestinationRaisesHTTPErrorWhenSourceDoesNotRespond(
            self, mockResponse):
        setUpMockResponse(
            mockResponse, 200,
            self.auxFilesDirectory + 'responseInternalServerErrorHotels.json')

        self.assertRaises(exceptions.HTTPError,
                          self.hotelsManager.getHotelsInDestination,
                          "Argentina", "Buenos Aires")
Example #6
0
    def testGetHotelsInCountryAndCityDestinationWithInvalidCityRaisesValueError(
            self, mockResponse):
        setUpMockResponse(
            mockResponse, 200,
            self.auxFilesDirectory + 'responseInvalidInputHotels.json')

        self.assertRaises(ValueError,
                          self.hotelsManager.getHotelsInDestination,
                          "Argentina", "invalidCity")
Example #7
0
    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)
Example #8
0
    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)
Example #9
0
    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)
Example #10
0
    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)
Example #11
0
  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)
Example #12
0
  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)
Example #13
0
  def testApiRespondsWith500StatusWhenOtherErrorIsDetected(self, mockReservationsAPIResponse):
    setUpMockResponse(mockReservationsAPIResponse, 500, None, Exception)
    expectedStatusCode = 500
    response = self.api.get('/recomendationSystem/Argentina/')

    self.assertEqual(response.status_code, expectedStatusCode)
Example #14
0
  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)