示例#1
0
class DummyLicensePlateUUIDTest(TransactionTestCase):

    def setUp(self):
        """ this method will automatically call for every single test """
        # for testing requests inside the project
        self.factory = RequestFactory()

        self.userId = "067e6162-3b6f-4ae2-a171-2470b63dff00"
        self.userId2 = "4f20c8f4-ddea-4c6c-87bb-c7bd3d435a51"

        # loads the events
        self.helper = TestHelper(self)
        self.helper.insertEventsOnDatabase()

        # add dummy  bus
        self.licencePlate = 'AA1111'
        self.service = '507'

        self.machineId = self.helper.askForMachineId(self.licencePlate)
        self.helper.getInBusWithMachineId(
            self.userId, self.service, self.machineId)

        # add dummy bus stop
        self.helper.insertBusstopsOnDatabase(['PA459'])

        # add dummy service and its patha
        self.service = '507'
        self.direction = 'I'
        self.helper.insertServicesOnDatabase([self.service])

        self.helper.insertServiceStopDistanceOnDatabase(
            self.service, self.direction)

        self.helper.insertServiceLocationOnDatabase(
            self.service, self.direction)

    def test_RequestTokenWithDummyLicensePlateUUID(self):
        ''' This method will test a token for a dummy license plate bus with uuid '''

        licencePlate = Constants.DUMMY_LICENSE_PLATE
        busService = '507'

        machineId = self.helper.askForMachineId(licencePlate)

        # a ghost bus is created with the same uuid that was recieved
        self.assertEqual(Busv2.objects.filter(uuid=machineId).exists(), True)

        testToken = self.helper.getInBusWithMachineId(
            self.userId, busService, machineId)

        # the created token is an active token
        self.assertEqual(
            ActiveToken.objects.filter(
                token=testToken).exists(), True)
        # the created token exist in the table of token
        self.assertEqual(Token.objects.filter(token=testToken).exists(), True)

        jsonResponse = self.helper.endRoute(testToken)

        self.assertEqual(jsonResponse['response'], 'Trip ended.')

    def test_RequestTokenV2WithRealLicencePlate(self):
        ''' This method will test a token for bus with uuid '''

        licencePlate = 'AA1111'
        busService = '507'

        machineId = self.helper.askForMachineId(licencePlate)

        # a ghost bus is created with the same uuid that was recieved
        self.assertEqual(Busv2.objects.filter(uuid=machineId).exists(), True)

        testToken = self.helper.getInBusWithMachineId(
            self.userId, busService, machineId)

        # the created token is an active token
        self.assertEqual(
            ActiveToken.objects.filter(
                token=testToken).exists(), True)
        # the created token exist in the table of token
        self.assertEqual(Token.objects.filter(token=testToken).exists(), True)

        jsonResponse = self.helper.endRoute(testToken)

        self.assertEqual(jsonResponse['response'], 'Trip ended.')

    def test_EventsByBusWithDummyLicensePlateUUID(self):
        '''This method test two thing, the posibility to report an event and asking
        the events for the specific dummy bus'''

        licencePlate = Constants.DUMMY_LICENSE_PLATE
        busService = '507'
        eventCode = 'evn00101'

        machineId = self.helper.askForMachineId(licencePlate)

        # a ghost bus is created with the same uuid that was recieved
        self.assertEqual(Busv2.objects.filter(uuid=machineId).exists(), True)

        testToken = self.helper.getInBusWithMachineId(
            self.userId, busService, machineId)

        # the created token is an active token
        self.assertEqual(
            ActiveToken.objects.filter(
                token=testToken).exists(), True)
        # the created token exist in the table of token
        self.assertEqual(Token.objects.filter(token=testToken).exists(), True)
        # the created token has the uuid for the dummybus
        # self.assertEqual(Token.objects.filter(uuid=puuid).exists(), True)

        # submitting one event to the server
        jsonResponse = self.helper.reportEventV2(
            self.userId, machineId, busService, eventCode)

        self.assertEqual(jsonResponse['uuid'], machineId)
        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 0)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 1)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        # ===================================================================================
        # getting events for a specific bus
        jsonResponse = self.helper.requestEventsForBusV2(machineId)

        # verify the previous event reported
        self.assertEqual(jsonResponse['uuid'], machineId)
        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 0)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 1)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        # ===================================================================================
        # do event +1 to the event
        jsonResponse = self.helper.confirmOrDeclineEventV2(self.userId, machineId, busService,
                                                           eventCode, 'confirm')

        self.assertEqual(jsonResponse['uuid'], machineId)
        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 0)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 2)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        # ===================================================================================
        # getting events for a specific bus
        jsonResponse = self.helper.requestEventsForBusV2(machineId)

        # verify the previous event reported
        self.assertEqual(jsonResponse['uuid'], machineId)
        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 0)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 2)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        # do event -1 to the event
        jsonResponse = self.helper.confirmOrDeclineEventV2(self.userId, machineId, busService,
                                                           eventCode, 'decline')

        self.assertEqual(jsonResponse['uuid'], machineId)
        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 1)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 2)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        # ===================================================================================
        # getting events for a specific bus
        jsonResponse = self.helper.requestEventsForBusV2(machineId)

        # verify the previous event reported
        self.assertEqual(jsonResponse['uuid'], machineId)
        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 1)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 2)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        # change manually the timeStamp to simulate an event that has expired
        bus = Busv2.objects.get(uuid=machineId)
        assignment = Busassignment.objects.get(service=busService, uuid=bus)
        event = Event.objects.get(id=eventCode)
        anEvent = EventForBusv2.objects.get(
            busassignment=assignment, event=event)

        anEvent.timeStamp = anEvent.timeCreation - \
            timezone.timedelta(minutes=event.lifespam)
        anEvent.save()

        # ask for events and the answer should be none
        jsonResponse = self.helper.requestEventsForBusV2(machineId)

        self.assertEqual(len(jsonResponse['events']), 0)

    def test_EventsByBusv2(self):
        '''This method test two thing, the posibility to report an event and asking
        the events for the specific bus'''

        licencePlate = 'AA1111'
        busService = '507'
        eventCode = 'evn00101'

        machineId = self.helper.askForMachineId(licencePlate)

        # submitting one event to the server
        jsonResponse = self.helper.reportEventV2(
            self.userId, machineId, busService, eventCode)

        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 0)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 1)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        # ===================================================================================
        # getting events for a specific bus
        requestToRequestEventForBus = self.factory.get(
            '/android/requestEventsForBus/v2/')
        requestToRequestEventForBus.user = AnonymousUser()

        # verify the previous event reported
        requestEventForBusView = EventsByBusV2()
        responseToRequestEventForBus = requestEventForBusView.get(requestToRequestEventForBus,
                                                                  machineId)

        responseToRequestEventForBus = json.loads(
            responseToRequestEventForBus.content)

        self.assertEqual(responseToRequestEventForBus[
                         'registrationPlate'], licencePlate)
        self.assertEqual(responseToRequestEventForBus[
                         'events'][0]['eventDecline'], 0)
        self.assertEqual(responseToRequestEventForBus[
                         'events'][0]['eventConfirm'], 1)
        self.assertEqual(responseToRequestEventForBus[
                         'events'][0]['eventcode'], eventCode)

        # ===================================================================================
        # do event +1 to the event
        jsonResponse = self.helper.confirmOrDeclineEventV2(
            self.userId, machineId, busService, eventCode, 'confirm')

        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 0)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 2)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        responseToRequestEventForBus = requestEventForBusView.get(requestToRequestEventForBus,
                                                                  machineId)
        responseToRequestEventForBus = json.loads(
            responseToRequestEventForBus.content)

        self.assertEqual(responseToRequestEventForBus[
                         'registrationPlate'], licencePlate)
        self.assertEqual(responseToRequestEventForBus[
                         'events'][0]['eventDecline'], 0)
        self.assertEqual(responseToRequestEventForBus[
                         'events'][0]['eventConfirm'], 2)
        self.assertEqual(responseToRequestEventForBus[
                         'events'][0]['eventcode'], eventCode)

        # do event -1 to the event
        jsonResponse = self.helper.confirmOrDeclineEventV2(
            self.userId, machineId, busService, eventCode, 'decline')

        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 1)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 2)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        responseToRequestEventForBus = requestEventForBusView.get(requestToRequestEventForBus,
                                                                  machineId)
        responseToRequestEventForBus = json.loads(
            responseToRequestEventForBus.content)

        self.assertEqual(responseToRequestEventForBus[
                         'registrationPlate'], licencePlate)
        self.assertEqual(responseToRequestEventForBus[
                         'events'][0]['eventDecline'], 1)
        self.assertEqual(responseToRequestEventForBus[
                         'events'][0]['eventConfirm'], 2)
        self.assertEqual(responseToRequestEventForBus[
                         'events'][0]['eventcode'], eventCode)

        # change manually the timeStamp to simulate an event that has expired
        # bus= Bus.objects.get(registrationPlate=licencePlate, service=busService)
        bus = Busv2.objects.get(registrationPlate=licencePlate)
        busassignment = Busassignment.objects.get(uuid=bus, service=busService)
        event = Event.objects.get(id=eventCode)
        anEvent = EventForBusv2.objects.get(
            busassignment=busassignment, event=event)

        anEvent.timeStamp = anEvent.timeCreation - \
            timezone.timedelta(minutes=event.lifespam)
        anEvent.save()

        # ask for events and the answer should be none
        responseToRequestEventForBus = requestEventForBusView.get(
            requestToRequestEventForBus, bus.uuid)
        responseToRequestEventForBus = json.loads(
            responseToRequestEventForBus.content)

        self.assertEqual(len(responseToRequestEventForBus['events']), 0)

    def test_EventsByBusStopv2(self):
        '''This method test two thing, the posibility to report an event and asking
        the events for the specific busStop'''

        busStopCode = 'PA459'
        eventCode = 'evn00001'
        # submitting some events to the server
        request = self.factory.get('/android/reportEventBusStop/v2/')
        request.user = AnonymousUser()

        request0 = self.factory.get('/android/requestEventsForBusStop/v2/')
        request0.user = AnonymousUser()

        reponseView = RegisterEventBusStop()
        # make a report
        reponseView.get(
            request,
            self.userId,
            busStopCode,
            eventCode,
            'confirm')

        # report one event, and confirm it
        response0View = EventsByBusStop()
        response0 = response0View.get(request0, busStopCode)
        response0 = json.loads(response0.content)

        self.assertEqual(response0['codeBusStop'], busStopCode)
        self.assertEqual(response0['events'][0]['eventDecline'], 0)
        self.assertEqual(response0['events'][0]['eventConfirm'], 1)
        self.assertEqual(response0['events'][0]['eventcode'], eventCode)

        # do event +1 to the event
        reponseView.get(
            request,
            self.userId,
            busStopCode,
            eventCode,
            'confirm')
        response0 = response0View.get(request0, busStopCode)
        response0 = json.loads(response0.content)

        self.assertEqual(response0['codeBusStop'], busStopCode)
        self.assertEqual(response0['events'][0]['eventDecline'], 0)
        self.assertEqual(response0['events'][0]['eventConfirm'], 2)
        self.assertEqual(response0['events'][0]['eventcode'], eventCode)

        # do event -1 to the event
        reponseView.get(
            request,
            self.userId,
            busStopCode,
            eventCode,
            'decline')
        response0 = response0View.get(request0, busStopCode)
        response0 = json.loads(response0.content)

        self.assertEqual(response0['codeBusStop'], busStopCode)
        self.assertEqual(response0['events'][0]['eventDecline'], 1)
        self.assertEqual(response0['events'][0]['eventConfirm'], 2)
        self.assertEqual(response0['events'][0]['eventcode'], eventCode)

        # change manualy the timeStamp to simulate an event that has expired
        busStop = BusStop.objects.get(code=busStopCode)
        event = Event.objects.get(id=eventCode)
        anEvent = EventForBusStop.objects.get(busStop=busStop, event=event)

        anEvent.timeStamp = anEvent.timeCreation - \
            timezone.timedelta(minutes=event.lifespam)
        anEvent.save()

        # ask for ecents and the answere should be none
        response0 = response0View.get(request0, busStopCode)
        response0 = json.loads(response0.content)

        self.assertEqual(len(response0['events']), 0)

    def test_RequestUUIDBasedOnLicensePlate(self):
        """ test the method to request an uuid based on license plate """
        licensePlates = ["AFJG21", "aFAf21", "AF-SD23", "FG-DF-45"]

        request = self.factory.get('/android/getUUID/')
        request.user = AnonymousUser()

        reponseView = RequestUUID()

        # it is a valid uuid
        pattern = re.compile(
            "^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$")

        for licensePlate in licensePlates:
            response = reponseView.get(request, licensePlate)

            self.assertEqual(response.status_code, 200)

            testUUID = json.loads(response.content)
            uuid = testUUID['uuid']

            self.assertTrue((pattern.match(uuid.upper()) if True else False))

        """ if request a second uuid with an old license plate, i must to get the same uuid """
        response2 = reponseView.get(request, licensePlates[3])
        testUUID2 = json.loads(response2.content)
        uuid2 = testUUID2['uuid']

        self.assertTrue(pattern.match(uuid2.upper()))
        self.assertTrue(uuid == uuid2)

    def test_RequestUUIDBasedOnDummyLicensePlate(self):
        """ test the method to request an uuid based on dummy license plate """
        licensePlate = Constants.DUMMY_LICENSE_PLATE

        request = self.factory.get('/android/getUUID/')
        request.user = AnonymousUser()

        reponseView = RequestUUID()
        response = reponseView.get(request, licensePlate)

        self.assertEqual(response.status_code, 200)

        testUUID = json.loads(response.content)
        uuid = testUUID['uuid']

        # it is a valid uuid
        pattern = re.compile(
            "^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$")
        self.assertTrue((pattern.match(uuid.upper()) if True else False))

        """ if request a second uuid wiht dummy license plate, i must to get a new uuid """
        response2 = reponseView.get(request, licensePlate)
        testUUID2 = json.loads(response2.content)
        uuid2 = testUUID2['uuid']

        self.assertTrue((pattern.match(uuid2.upper()) if True else False))
        self.assertFalse(uuid == uuid2)

    def test_MergeEventsFromTheSameBusButDifferenceService(self):
        """ test the method that merge event from the same bus machine but difference service """

        licencePlate = 'AA1111'
        busService1 = '506'
        busService2 = '509'
        eventCode1 = 'evn00230'
        eventCode2 = 'evn00240'
        eventCode3 = 'evn00232'

        # ask for bus and get the UUID
        request = self.factory.get('/android/getUUID/')
        view = RequestUUID()
        responseGetUUID = view.get(request, licencePlate)

        self.assertEqual(responseGetUUID.status_code, 200)

        testUUID = json.loads(responseGetUUID.content)['uuid']

        # creat bus to create an assignment
        request = self.factory.get('/android/requestToken/v2/')
        request.user = AnonymousUser()
        reponseView = RequestTokenV2()
        response = reponseView.get(request, self.userId, busService1, testUUID)
        self.assertEqual(response.status_code, 200)

        # creat bus to create an assignment
        request = self.factory.get('/android/requestToken/v2/')
        request.user = AnonymousUser()
        reponseView = RequestTokenV2()
        response = reponseView.get(request, self.userId, busService2, testUUID)
        self.assertEqual(response.status_code, 200)

        # submitting some events to the server
        requestToReportEventBus = self.factory.get(
            '/android/reportEventBus/v2/')
        requestToReportEventBus.user = AnonymousUser()

        # send first report with service 1
        reportEventBusView = RegisterEventBusV2()
        responseToReportEventBus = reportEventBusView.get(requestToReportEventBus,
                                                          self.userId, testUUID, busService1, eventCode1, 'confirm')

        responseToReportEventBus = json.loads(responseToReportEventBus.content)

        self.assertEqual(responseToReportEventBus['uuid'], testUUID)
        self.assertEqual(
            responseToReportEventBus['registrationPlate'],
            licencePlate)
        self.assertEqual(responseToReportEventBus[
                         'events'][0]['eventDecline'], 0)
        self.assertEqual(responseToReportEventBus[
                         'events'][0]['eventConfirm'], 1)
        self.assertEqual(responseToReportEventBus['events'][
                         0]['eventcode'], eventCode1)

        # send second report with service 2- We declien the previous event
        # reportd
        responseToReportEventBus = reportEventBusView.get(requestToReportEventBus,
                                                          self.userId, testUUID, busService2, eventCode1, 'decline')

        responseToReportEventBus = json.loads(responseToReportEventBus.content)

        self.assertEqual(responseToReportEventBus['uuid'], testUUID)
        self.assertEqual(
            responseToReportEventBus['registrationPlate'],
            licencePlate)
        self.assertEqual(responseToReportEventBus[
                         'events'][0]['eventDecline'], 1)
        self.assertEqual(responseToReportEventBus[
                         'events'][0]['eventConfirm'], 1)
        self.assertEqual(responseToReportEventBus['events'][
                         0]['eventcode'], eventCode1)

        # report second event to service
        responseToReportEventBus = reportEventBusView.get(requestToReportEventBus,
                                                          self.userId, testUUID, busService1, eventCode2, 'confirm')

        responseToReportEventBus = json.loads(responseToReportEventBus.content)

        self.assertEqual(responseToReportEventBus['uuid'], testUUID)
        self.assertEqual(
            responseToReportEventBus['registrationPlate'],
            licencePlate)
        self.assertEqual(responseToReportEventBus[
                         'events'][0]['eventDecline'], 1)
        self.assertEqual(responseToReportEventBus[
                         'events'][0]['eventConfirm'], 1)
        self.assertEqual(responseToReportEventBus['events'][
                         0]['eventcode'], eventCode1)
        self.assertEqual(responseToReportEventBus[
                         'events'][1]['eventDecline'], 0)
        self.assertEqual(responseToReportEventBus[
                         'events'][1]['eventConfirm'], 1)
        self.assertEqual(responseToReportEventBus['events'][
                         1]['eventcode'], eventCode2)

        # report third event to service
        responseToReportEventBus = reportEventBusView.get(requestToReportEventBus,
                                                          self.userId, testUUID, busService2, eventCode3, 'confirm')

        responseToReportEventBus = json.loads(responseToReportEventBus.content)

        self.assertEqual(responseToReportEventBus['uuid'], testUUID)
        self.assertEqual(
            responseToReportEventBus['registrationPlate'],
            licencePlate)
        self.assertEqual(responseToReportEventBus[
                         'events'][0]['eventDecline'], 1)
        self.assertEqual(responseToReportEventBus[
                         'events'][0]['eventConfirm'], 1)
        self.assertEqual(responseToReportEventBus['events'][
                         0]['eventcode'], eventCode1)
        self.assertEqual(responseToReportEventBus[
                         'events'][1]['eventDecline'], 0)
        self.assertEqual(responseToReportEventBus[
                         'events'][1]['eventConfirm'], 1)
        self.assertEqual(responseToReportEventBus['events'][
                         1]['eventcode'], eventCode3)
        self.assertEqual(responseToReportEventBus[
                         'events'][2]['eventDecline'], 0)
        self.assertEqual(responseToReportEventBus[
                         'events'][2]['eventConfirm'], 1)
        self.assertEqual(responseToReportEventBus['events'][
                         2]['eventcode'], eventCode2)

    def test_AskForAnNonExistentBus(self):
        """ ask for events for a bus that does not exists """
        uuid = '2e5443b7-a824-4a78-bb62-6c4e24adaaeb'

        jsonResponse = self.helper.requestEventsForBusV2(uuid)

        self.assertEqual(len(jsonResponse['events']), 0)
        self.assertEqual(jsonResponse['registrationPlate'], '')
class CronTasksTestCase(TransactionTestCase):
    """ test for cron-task actions """

    def setUp(self):
        self.factory = RequestFactory()

        self.test = TestHelper(self)
        self.test.insertEventsOnDatabase()

        # create bus stop
        self.stop = "PI62"
        self.test.insertBusstopsOnDatabase([self.stop])

        # define test events
        self.stopEventCode = "evn00010"
        self.busEventCode = "evn00200"

        self.userId = "067e6162-3b6f-4ae2-a171-2470b63dff00"
        self.service = "506"
        self.registrationPlate = "XXYY25"
        self.machineId = self.test.askForMachineId(self.registrationPlate)

    def test_does_not_have_the_minimum_number_of_declines_for_bus_stop(self):
        """ it does not have the minimum number of declines for bus stop """

        self.test.reportStopEvent(self.userId, self.stop, self.stopEventCode)

        # decline event
        for index in range(0, cronTasks.MINIMUM_NUMBER_OF_DECLINES - 2):
            self.test.confirmOrDeclineStopEvent(self.userId, self.stop, self.stopEventCode, "decline")
        # decline isn't 100% over confirm

        cronTasks.clearEventsThatHaveBeenDecline()

        jsonResponse = self.test.requestEventsForBusStop(self.stop)

        # evaluate events
        self.assertEqual(len(jsonResponse["events"]), 1)
        self.assertEqual(jsonResponse["events"][0]["eventcode"], self.stopEventCode)

    def test_does_not_have_the_percentage_of_declines_for_bus_stop(self):
        """ it has the minimum number of declines but not the percentage of declines over confirms for bus stop"""

        self.test.reportStopEvent(self.userId, self.stop, self.stopEventCode)

        # report events for bus stop
        for index in range(0, cronTasks.MINIMUM_NUMBER_OF_DECLINES + 1):
            self.test.confirmOrDeclineStopEvent(self.userId, self.stop, self.stopEventCode, "confirm")

        # decline event
        for index in range(0, cronTasks.MINIMUM_NUMBER_OF_DECLINES + 1):
            self.test.confirmOrDeclineStopEvent(self.userId, self.stop, self.stopEventCode, "decline")
        # decline isn't 100% over confirm

        cronTasks.clearEventsThatHaveBeenDecline()

        jsonResponse = self.test.requestEventsForBusStop(self.stop)

        # evaluate events
        self.assertEqual(len(jsonResponse["events"]), 1)
        self.assertEqual(jsonResponse["events"][0]["eventcode"], self.stopEventCode)

    def test_have_the_percentage_of_declines_and_the_minimum_number_of_declines_over_confirm_for_bus_stop(self):
        """ it has the minimum number of declines and the percentage of declines over confirms for bus stop"""

        self.test.reportStopEvent(self.userId, self.stop, self.stopEventCode)

        # report events for bus stop
        for index in range(0, cronTasks.MINIMUM_NUMBER_OF_DECLINES):
            self.test.confirmOrDeclineStopEvent(self.userId, self.stop, self.stopEventCode, "confirm")

        # decline event
        for index in range(0, cronTasks.MINIMUM_NUMBER_OF_DECLINES * 3):
            self.test.confirmOrDeclineStopEvent(self.userId, self.stop, self.stopEventCode, "decline")
        # decline isn't 100% over confirm

        cronTasks.clearEventsThatHaveBeenDecline()

        jsonResponse = self.test.requestEventsForBusStop(self.stop)
        # evaluate events
        self.assertEqual(len(jsonResponse["events"]), 0)

    def test_does_not_have_the_minimum_number_of_declines_for_bus(self):
        """ it does not have the minimum number of declines for bus  """
        # create assignment
        self.test.createBusAndAssignmentOnDatabase(self.userId, self.service, self.registrationPlate)

        self.test.reportEventV2(self.userId, self.machineId, self.service, self.busEventCode)

        # decline event
        for index in range(0, cronTasks.MINIMUM_NUMBER_OF_DECLINES - 1):
            self.test.confirmOrDeclineEventV2(self.userId, self.machineId, self.service, self.busEventCode, "decline")
        # decline isn't 100% over confirm

        cronTasks.clearEventsThatHaveBeenDecline()

        jsonResponse = self.test.requestEventsForBusV2(self.machineId)

        # evaluate events
        self.assertEqual(len(jsonResponse["events"]), 1)
        self.assertEqual(jsonResponse["events"][0]["eventcode"], self.busEventCode)
        self.assertEqual(jsonResponse["uuid"], self.machineId)
        self.assertEqual(jsonResponse["registrationPlate"], self.registrationPlate)

    def test_does_not_have_the_percentage_of_declines_for_bus(self):
        """ it has the minimum number of declines but not the percentage of declines over confirms for bus """

        # create assignment
        self.test.createBusAndAssignmentOnDatabase(self.userId, self.service, self.registrationPlate)
        # generate report events for bus
        for index in range(0, cronTasks.MINIMUM_NUMBER_OF_DECLINES + 1):
            self.test.confirmOrDeclineEventV2(self.userId, self.machineId, self.service, self.busEventCode, "confirm")
        # decline event
        for index in range(0, cronTasks.MINIMUM_NUMBER_OF_DECLINES + 1):
            self.test.confirmOrDeclineEventV2(self.userId, self.machineId, self.service, self.busEventCode, "decline")
        # decline is 100% over confirm

        cronTasks.clearEventsThatHaveBeenDecline()

        jsonResponse = self.test.requestEventsForBusV2(self.machineId)

        # evaluate events
        self.assertEqual(len(jsonResponse["events"]), 1)
        self.assertEqual(jsonResponse["events"][0]["eventcode"], self.busEventCode)
        self.assertEqual(jsonResponse["uuid"], self.machineId)
        self.assertEqual(jsonResponse["registrationPlate"], self.registrationPlate)

    def test_have_the_percentage_of_declines_and_the_minimum_number_of_declines_over_confirm_for_bus(self):
        """ it has the minimum number of declines and the percentage of declines over confirms for bus """
        # create assignment
        self.test.createBusAndAssignmentOnDatabase(self.userId, self.service, self.registrationPlate)

        self.test.reportEventV2(self.userId, self.machineId, self.service, self.busEventCode)

        # generate report events for bus
        for index in range(0, cronTasks.MINIMUM_NUMBER_OF_DECLINES):
            self.test.confirmOrDeclineEventV2(self.userId, self.machineId, self.service, self.busEventCode, "confirm")

        # decline event
        for index in range(0, cronTasks.MINIMUM_NUMBER_OF_DECLINES * 3):
            self.test.confirmOrDeclineEventV2(self.userId, self.machineId, self.service, self.busEventCode, "decline")
        # decline is 100% over confirm

        jsonResponse = self.test.requestEventsForBusV2(self.machineId)
        self.assertEqual(len(jsonResponse["events"]), 1)
        self.assertEqual(jsonResponse["events"][0]["eventcode"], self.busEventCode)
        self.assertEqual(jsonResponse["uuid"], self.machineId)

        cronTasks.clearEventsThatHaveBeenDecline()

        jsonResponse = self.test.requestEventsForBusV2(self.machineId)

        # evaluate events
        self.assertEqual(len(jsonResponse["events"]), 0)