Ejemplo n.º 1
0
    def test_doesNotUpdateSeasonTicketPrices_forNonNRStations(self):
        responses.add(responses.GET,
                      'http://api.brfares.com/querysimple',
                      body="Bad Request",
                      status=400)

        self.mock_db.collection('stations').document('LBG').set(lbg)
        self.mock_db.collection('stations').document('BAH').set(bah)
        self.mock_db.collection('destinations').document('LBG').set({
            **lbg, 'journeys':
            helpers.make_journey_dict(bah),
            'journey_costs_updated':
            datetime(2018, 12, 2)
        })

        updaters.update(self.interactor)

        journey = self.mock_db \
            .collection('destinations') \
            .document('LBG') \
            .collection('journeys') \
            .document('BAH') \
            .get().to_dict()

        self.assertEqual(0, len(responses.calls))
        self.assertTrue('season_ticket' not in journey)
Ejemplo n.º 2
0
    def test_updatesOneDestinationPerRun(self):
        self._stub_directions_response(10)
        self.mock_db.collection('destinations').document('LBG').set({
            **lbg,
            'journey_times_updated': datetime.datetime(2018, 12, 1)
        })
        self.mock_db.collection('destinations').document('KGX').set({
            **kgx,
            'journey_times_updated': datetime.datetime(2018, 12, 2)
        })

        updaters.update(self.interactor)

        journeys_to_lbg = self.mock_db \
            .collection('destinations') \
            .document('LBG') \
            .collection('journeys') \
            .get()

        journeys_to_kgx = self.mock_db \
            .collection('destinations') \
            .document('KGX') \
            .collection('journeys') \
            .get()

        self.assertEqual(1, len(journeys_to_lbg))
        self.assertEqual(0, len(journeys_to_kgx))
Ejemplo n.º 3
0
    def test_updatesTimestampAfterRun(self):
        self._stub_directions_response(10)
        original_update_time = datetime.datetime(2018, 12, 1)
        self.mock_db.collection('destinations').document('LBG').set({
            **lbg,
            'journey_times_updated': original_update_time
        })

        updaters.update(self.interactor)

        new_update_time = self.mock_db.collection('destinations').document('LBG')\
            .get().to_dict()['journey_times_updated']

        self.assertGreater(new_update_time, original_update_time)
Ejemplo n.º 4
0
    def test_createsJourneyEntry_ifItDoesNotExist(self):
        self.mock_db.collection('stations').document('LBG').set(lbg)
        self.mock_db.collection('stations').document('KGX').set(kgx)
        self.mock_db.collection('destinations').document('LBG').set({
            **lbg, 'journey_costs_updated':
            datetime(2018, 12, 2)
        })

        updaters.update(self.interactor)

        journey = self.mock_db \
            .collection('destinations') \
            .document('LBG') \
            .collection('journeys') \
            .document('KGX') \
            .get().to_dict()

        expected = {'min_zone': '1', 'max_zone': '1', 'annual_price': 1404}
        self.assertEqual(expected, journey['travelcard'])
Ejemplo n.º 5
0
    def test_doesNotUpdateDestinationsUpdatedThisYear(self):
        self.mock_db.collection('stations').document('LBG').set(lbg)
        self.mock_db.collection('stations').document('KGX').set(kgx)

        this_year = date.today().year
        self.mock_db.collection('destinations').document('LBG').set({
            **lbg, 'journey_costs_updated':
            datetime(this_year, 12, 2)
        })

        updaters.update(self.interactor)

        journey = self.mock_db \
            .collection('destinations') \
            .document('LBG') \
            .collection('journeys') \
            .document('KGX') \
            .get().to_dict()

        self.assertTrue('travelcard' not in journey)
Ejemplo n.º 6
0
    def test_updatesTheLeastRecentlyUpdated(self):
        self._stub_directions_response(10)
        self.mock_db.collection('destinations').document('LBG').set({
            **lbg,
            'journey_times_updated': datetime.datetime(2018, 12, 2)
        })
        self.mock_db.collection('destinations').document('KGX').set({
            **kgx,
            'journey_times_updated': datetime.datetime(2018, 12, 1)
        })

        updaters.update(self.interactor)

        journeys_to_kgx = self.mock_db \
            .collection('destinations') \
            .document('KGX') \
            .collection('journeys') \
            .get()

        self.assertEqual(1, len(journeys_to_kgx))
        self.assertRequestParamsCorrect(origin=lbg, destination=kgx)
Ejemplo n.º 7
0
    def test_updatesTravelcardPrices_forStationsWithSpecialFares(self):
        self.mock_db.collection('stations').document('LBG').set(lbg)
        self.mock_db.collection('stations').document('SNF').set(snf)
        self.mock_db.collection('destinations').document('LBG').set({
            **lbg, 'journeys':
            helpers.make_journey_dict(snf),
            'journey_costs_updated':
            datetime(2018, 12, 2)
        })

        updaters.update(self.interactor)

        journey = self.mock_db \
            .collection('destinations') \
            .document('LBG') \
            .collection('journeys') \
            .document('SNF') \
            .get().to_dict()

        expected = {'min_zone': '1', 'max_zone': 'SNF', 'annual_price': 4364}
        self.assertEqual(expected, journey['travelcard'])
Ejemplo n.º 8
0
    def test_updatesTravelcardPrices_forMultiZoneStations_bothInZone1(self):
        self.mock_db.collection('stations').document('VXH').set(vxh)
        self.mock_db.collection('stations').document('LBG').set(lbg)
        self.mock_db.collection('destinations').document('VXH').set({
            **vxh, 'journeys':
            helpers.make_journey_dict(lbg),
            'journey_costs_updated':
            datetime(2018, 12, 2)
        })

        updaters.update(self.interactor)

        journey = self.mock_db \
            .collection('destinations') \
            .document('VXH') \
            .collection('journeys') \
            .document('LBG') \
            .get().to_dict()

        expected = {'min_zone': '1', 'max_zone': '1', 'annual_price': 1404}
        self.assertEqual(expected, journey['travelcard'])
Ejemplo n.º 9
0
    def test_updatesTheLeastRecentlyUpdated(self):
        self.mock_db.collection('stations').document('LBG').set(lbg)
        self.mock_db.collection('stations').document('KGX').set(kgx)

        self.mock_db.collection('destinations').document('LBG').set({
            **lbg, 'journey_costs_updated':
            datetime(2018, 12, 2)
        })
        self.mock_db.collection('destinations').document('KGX').set({
            **kgx, 'journey_costs_updated':
            datetime(2018, 12, 1)
        })

        updaters.update(self.interactor)

        journeys_to_kgx = self.mock_db \
            .collection('destinations') \
            .document('KGX') \
            .collection('journeys') \
            .get()

        self.assertEqual(1, len(journeys_to_kgx))
Ejemplo n.º 10
0
def update_journey_costs():
    key = json.loads(os.environ['GCLOUD_SA_KEY'])
    credentials = service_account.Credentials.from_service_account_info(key)

    database = Database(
        firestore.Client(project=os.environ['GCLOUD_PROJECT_ID'],
                         credentials=credentials))
    interactor = JourneyCostsInteractor(db=database)

    update_results = updaters.update(interactor)
    print("Journey costs: " + update_results.message)

    if update_results.has_errors:
        sys.exit(1)
Ejemplo n.º 11
0
    def test_updatesJourneyTimes(self):

        self._stub_directions_response(10)
        self.mock_db.collection('destinations').document('LBG').set({
            **lbg, 'journey_times_updated': 0
        })

        update_results = updaters.update(self.interactor)

        self.assertFalse(update_results.has_errors)

        journey = self.mock_db \
            .collection('destinations') \
            .document('LBG') \
            .collection('journeys') \
            .document('KGX') \
            .get().to_dict()

        self.assertEqual(10, journey['time'])
        self.assertEqual(kgx, journey['origin'])
        self.assertRequestParamsCorrect(origin=kgx, destination=lbg)
Ejemplo n.º 12
0
    def test_updatesSeasonTicketPrices_forNRStations(self):
        self.mock_db.collection('stations').document('LBG').set(lbg)
        self.mock_db.collection('stations').document('SRA').set(sra)
        self.mock_db.collection('destinations').document('LBG').set({
            **lbg, 'journeys':
            helpers.make_journey_dict(sra),
            'journey_costs_updated':
            datetime(2018, 12, 2)
        })

        update_results = updaters.update(self.interactor)

        self.assertFalse(update_results.has_errors)

        journey = self.mock_db \
            .collection('destinations') \
            .document('LBG') \
            .collection('journeys') \
            .document('SRA') \
            .get().to_dict()

        expected = {'annual_price': 1200}
        self.assertEqual(expected, journey['season_ticket'])
Ejemplo n.º 13
0
    def test_updatesTravelcardPrices(self):
        self.mock_db.collection('stations').document('LBG').set(lbg)
        self.mock_db.collection('stations').document('KGX').set(kgx)
        self.mock_db.collection('destinations').document('LBG').set({
            **lbg, 'journeys':
            helpers.make_journey_dict(kgx),
            'journey_costs_updated':
            datetime(2018, 12, 2)
        })

        update_results = updaters.update(self.interactor)

        self.assertFalse(update_results.has_errors)

        journey = self.mock_db \
            .collection('destinations') \
            .document('LBG') \
            .collection('journeys') \
            .document('KGX') \
            .get().to_dict()

        expected = {'min_zone': '1', 'max_zone': '1', 'annual_price': 1404}
        self.assertEqual(expected, journey['travelcard'])