def test_unknown_resident_weapon_returned(self): ''' Cleaning an unknown weapon returns the same value passed. ''' cleaner = Cleaners() weapon = "Suspect - Lewd Nebulosity " cleaned = cleaner.resident_weapon_used(weapon) assert cleaned == weapon
def test_known_resident_weapons_cleaned(self): ''' Cleaning known weapons returns the expected value. ''' cleaner = Cleaners() for weapon in RESIDENT_WEAPONS_LOOKUP: check_weapon = cleaner.resident_weapon_used(weapon) assert check_weapon == RESIDENT_WEAPONS_LOOKUP[weapon]
def test_known_resident_weapons_cleaned(self): """ Cleaning known weapons returns the expected value. """ cleaner = Cleaners() for weapon in RESIDENT_WEAPONS_LOOKUP: check_weapon = cleaner.resident_weapon_used(weapon) assert check_weapon == RESIDENT_WEAPONS_LOOKUP[weapon]
def test_unknown_resident_weapon_returned(self): """ Cleaning an unknown weapon returns the same value passed. """ cleaner = Cleaners() weapon = "Suspect - Lewd Nebulosity " cleaned = cleaner.resident_weapon_used(weapon) assert cleaned == weapon
def test_post_mistyped_ois_data(self, testapp): ''' New OIS data from the extractor is processed as expected. ''' # Set up the extractor department = Department.create(name="Good Police Department", short_name="GPD", load_defaults=False) extractor, envs = Extractor.from_department_and_password(department=department, password="******") # Set the correct authorization testapp.authorization = ('Basic', (extractor.username, 'password')) # Get a generated list of OIS descriptions from the JSON test client test_client = JSONTestClient() ois_count = 1 ois_data = test_client.get_prebaked_ois(last=ois_count) # The app expects number values to be transmitted as strings. Let's change them to integers. ois_data[0]['residentAge'] = 28 ois_data[0]['officerAge'] = 46 # And it expects this number value to be transmitted as a number, so let's make it a string. ois_data[0]['officerYearsOfService'] = "17" # post the json to the OIS URL response = testapp.post_json("/data/OIS", params={'month': 0, 'year': 0, 'data': ois_data}) # assert that we got the expected reponse assert response.status_code == 200 assert response.json_body['updated'] == 0 assert response.json_body['added'] == ois_count # check the ois incident in the database against the data that was sent cleaner = Cleaners() sent_ois = ois_data[0] check_ois = OfficerInvolvedShooting.query.filter_by(opaque_id=sent_ois['opaqueId']).first() assert check_ois.occured_date.strftime('%Y-%m-%d %-H:%-M:%S') == sent_ois['occuredDate'] assert check_ois.division == cleaner.capitalize(sent_ois['division']) assert check_ois.precinct == cleaner.capitalize(sent_ois['precinct']) assert check_ois.shift == cleaner.capitalize(sent_ois['shift']) assert check_ois.beat == cleaner.capitalize(sent_ois['beat']) assert check_ois.disposition == sent_ois['disposition'] assert check_ois.resident_race == cleaner.race(sent_ois['residentRace']) assert check_ois.resident_sex == cleaner.sex(sent_ois['residentSex']) assert check_ois.resident_age == cleaner.number_to_string(sent_ois['residentAge']) assert check_ois.resident_weapon_used == cleaner.resident_weapon_used(sent_ois['residentWeaponUsed']) assert check_ois.resident_condition == sent_ois['residentCondition'] assert check_ois.officer_identifier == sent_ois['officerIdentifier'] assert check_ois.officer_weapon_used == sent_ois['officerForceType'] assert check_ois.officer_race == cleaner.race(sent_ois['officerRace']) assert check_ois.officer_sex == cleaner.sex(sent_ois['officerSex']) assert check_ois.officer_age == cleaner.number_to_string(sent_ois['officerAge']) assert check_ois.officer_years_of_service == cleaner.string_to_integer(sent_ois['officerYearsOfService']) assert check_ois.officer_condition == sent_ois['officerCondition']
def test_update_ois_data(self, testapp): ''' Updated OIS data from the extractor is processed as expected. ''' # Set up the extractor department = Department.create(name="Good Police Department", short_name="GPD", load_defaults=False) extractor, envs = Extractor.from_department_and_password(department=department, password="******") # Set the correct authorization testapp.authorization = ('Basic', (extractor.username, 'password')) # Get a generated list of OIS descriptions from the JSON test client test_client = JSONTestClient() ois_data = test_client.get_prebaked_ois(last=1) # post the json to the OIS URL response = testapp.post_json("/data/OIS", params={'month': 0, 'year': 0, 'data': ois_data}) # assert that we got the expected reponse assert response.status_code == 200 assert response.json_body['updated'] == 0 assert response.json_body['added'] == 1 # Get the second pre-baked ois incident updated_ois_data = test_client.get_prebaked_ois(first=1, last=2) # Swap in the opaque ID from the first ois incident updated_ois_data[0]["opaqueId"] = ois_data[0]["opaqueId"] # The ois incident won't be a match unless this field is the same updated_ois_data[0]["officerIdentifier"] = ois_data[0]["officerIdentifier"] # post the json to the ois URL response = testapp.post_json("/data/OIS", params={'month': 0, 'year': 0, 'data': updated_ois_data}) # assert that we got the expected reponse assert response.status_code == 200 assert response.json_body['updated'] == 1 assert response.json_body['added'] == 0 # There's only one complaint in the database. all_ois = OfficerInvolvedShooting.query.all() assert len(all_ois) == 1 # check the ois incident in the database against the updated data that was sent cleaner = Cleaners() sent_ois = updated_ois_data[0] check_ois = OfficerInvolvedShooting.query.filter_by(opaque_id=sent_ois['opaqueId']).first() assert check_ois.occured_date.strftime('%Y-%m-%d %-H:%-M:%S') == sent_ois['occuredDate'] assert check_ois.division == cleaner.capitalize(sent_ois['division']) assert check_ois.precinct == cleaner.capitalize(sent_ois['precinct']) assert check_ois.shift == cleaner.capitalize(sent_ois['shift']) assert check_ois.beat == cleaner.capitalize(sent_ois['beat']) assert check_ois.disposition == sent_ois['disposition'] assert check_ois.resident_race == cleaner.race(sent_ois['residentRace']) assert check_ois.resident_sex == cleaner.sex(sent_ois['residentSex']) assert check_ois.resident_age == cleaner.number_to_string(sent_ois['residentAge']) assert check_ois.resident_weapon_used == cleaner.resident_weapon_used(sent_ois['residentWeaponUsed']) assert check_ois.resident_condition == sent_ois['residentCondition'] assert check_ois.officer_identifier == sent_ois['officerIdentifier'] assert check_ois.officer_weapon_used == sent_ois['officerForceType'] assert check_ois.officer_race == cleaner.race(sent_ois['officerRace']) assert check_ois.officer_sex == cleaner.sex(sent_ois['officerSex']) assert check_ois.officer_age == cleaner.number_to_string(sent_ois['officerAge']) assert check_ois.officer_years_of_service == cleaner.string_to_integer(sent_ois['officerYearsOfService']) assert check_ois.officer_condition == sent_ois['officerCondition']