Ejemplo n.º 1
0
def test_derive_pii_redacted_ppop_data(database):
    initialize_db_values(database)

    # Test derivations when country code is USA
    obj = initialize_test_obj(record_type=3,
                              legal_country='USA',
                              le_zip5='54321')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['place_of_perform_country_c'] == 'USA'
    assert obj['place_of_perform_country_n'] == 'United States of America'
    assert obj['place_of_performance_city'] == 'Test City 2'
    assert obj['place_of_perform_county_co'] == '001'
    assert obj['place_of_perform_county_na'] == 'Test County'
    assert obj['place_of_perform_state_nam'] == 'New York'
    assert obj['place_of_performance_zip4a'] == '54321'
    assert obj['place_of_performance_congr'] == '05'

    # Test derivations when country code isn't USA
    obj = initialize_test_obj(record_type=3,
                              legal_country='GBR',
                              legal_foreign_city='London')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['place_of_perform_country_c'] == 'GBR'
    assert obj['place_of_perform_country_n'] == 'Great Britain'
    assert obj['place_of_performance_city'] == 'London'
    assert obj['place_of_performance_forei'] == 'London'
def test_derive_labels(database):
    initialize_db_values(database)

    # Testing when these values are blank
    obj = initialize_test_obj()
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT,
                           FPDS_OFFICE_DICT)
    assert obj['action_type_description'] is None
    assert obj['assistance_type_desc'] is None
    assert obj['correction_delete_ind_desc'] is None
    assert obj['business_types_desc'] is None
    assert obj['business_funds_ind_desc'] is None

    # Testing for valid values of each
    obj = initialize_test_obj(cdi='c',
                              action_type='a',
                              assist_type='02',
                              busi_type='d',
                              busi_fund='non')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT,
                           FPDS_OFFICE_DICT)
    assert obj['action_type_description'] == ACTION_TYPE_DICT['A']
    assert obj['assistance_type_desc'] == ASSISTANCE_TYPE_DICT['02']
    assert obj['correction_delete_ind_desc'] == CORRECTION_DELETE_IND_DICT['C']
    assert obj['record_type_description'] == RECORD_TYPE_DICT[2]
    assert obj['business_types_desc'] == BUSINESS_TYPE_DICT['D']
    assert obj['business_funds_ind_desc'] == BUSINESS_FUNDS_IND_DICT['NON']

    # Testing for invalid values of each
    obj = initialize_test_obj(cdi='f',
                              action_type='z',
                              assist_type='01',
                              record_type=5,
                              busi_type='Z',
                              busi_fund='ab')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT,
                           FPDS_OFFICE_DICT)
    assert obj['action_type_description'] is None
    assert obj['assistance_type_desc'] is None
    assert obj['correction_delete_ind_desc'] is None
    assert obj['record_type_description'] is None
    assert obj['business_types_desc'] is None
    assert obj['business_funds_ind_desc'] is None

    # Test multiple business types (2 valid, one invalid)
    obj = initialize_test_obj(cdi='f',
                              action_type='z',
                              assist_type='01',
                              record_type=5,
                              busi_type='azb')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT,
                           FPDS_OFFICE_DICT)
    assert obj['business_types_desc'] == BUSINESS_TYPE_DICT[
        'A'] + ';' + BUSINESS_TYPE_DICT['B']
Ejemplo n.º 3
0
def test_legal_country(database):
    initialize_db_values(database)

    # if primary_place_of_performance_country_code is present get country name
    obj = initialize_test_obj(legal_country='USA')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['legal_entity_country_name'] == 'United States of America'

    obj = initialize_test_obj(legal_country='NK')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['legal_entity_country_name'] is None
Ejemplo n.º 4
0
def test_cfda_title(database):
    initialize_db_values(database)

    # when cfda_number isn't in the database
    obj = initialize_test_obj()
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['cfda_title'] is None

    # when cfda_number is in the database
    obj = initialize_test_obj(cfda_num='12.345')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['cfda_title'] == 'CFDA Title'
def test_derive_ppop_code(database):
    initialize_db_values(database)

    # Making sure nothing is changing if record type isn't 3
    obj = initialize_test_obj(record_type=1,
                              legal_country='USA',
                              le_zip5='12345')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT,
                           FPDS_OFFICE_DICT)
    assert obj['place_of_performance_code'] == 'NY00000'

    # 00FORGN if country isn't USA
    obj = initialize_test_obj(record_type=3,
                              ppop_code=None,
                              legal_country='GBD')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT,
                           FPDS_OFFICE_DICT)
    assert obj['place_of_performance_code'] == '00FORGN'

    # No derivation if country is USA and there is no state code
    obj = initialize_test_obj(record_type=3,
                              ppop_code=None,
                              legal_country='USA')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT,
                           FPDS_OFFICE_DICT)
    assert obj['place_of_performance_code'] is None

    # Default to 00000 if legal entity city code is nothing and country is USA
    obj = initialize_test_obj(record_type=3,
                              ppop_code=None,
                              legal_country='USA',
                              le_zip5='54321')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT,
                           FPDS_OFFICE_DICT)
    assert obj['place_of_performance_code'] == 'NY00000'

    # Properly set city code if legal entity city code is there and country is USA
    obj = initialize_test_obj(record_type=3,
                              ppop_code=None,
                              legal_country='USA',
                              le_zip5='12345')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT,
                           FPDS_OFFICE_DICT)
    assert obj['place_of_performance_code'] == 'NY00001'
def test_funding_office_codes(database):
    initialize_db_values(database)

    # if funding office_code is present, get office name
    obj = initialize_test_obj()
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT,
                           FPDS_OFFICE_DICT)
    assert obj['funding_office_name'] == 'Office'

    obj = initialize_test_obj(funding_office='111111')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT,
                           FPDS_OFFICE_DICT)
    assert obj['funding_office_name'] is None
Ejemplo n.º 7
0
def test_derive_parent_duns_no_parent_info(database):
    initialize_db_values(database)

    obj = initialize_test_obj(awardee_or_recipient_uniqu='345678901')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)

    assert obj['ultimate_parent_legal_enti'] is None
    assert obj['ultimate_parent_unique_ide'] is None
Ejemplo n.º 8
0
def test_funding_sub_tier_agency_na(database):
    initialize_db_values(database)

    # when funding_sub_tier_agency_co is not provided, it should get derived
    obj = initialize_test_obj()
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['funding_sub_tier_agency_na'] == 'Test Subtier Agency'
    assert obj['funding_agency_code'] == '000'
    assert obj['funding_agency_name'] == 'Test CGAC Agency'

    # when funding_sub_tier_agency_co is provided
    obj = initialize_test_obj(sub_fund_agency_code='4321')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['funding_sub_tier_agency_na'] == 'Test Frec Subtier Agency'
    assert obj['funding_agency_code'] == '1111'
    assert obj['funding_agency_name'] == 'Test FREC Agency'
Ejemplo n.º 9
0
def test_awarding_agency_frec(database):
    initialize_db_values(database)

    obj = initialize_test_obj(sub_tier_code='4321')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['awarding_agency_code'] == '1111'
    assert obj['awarding_agency_name'] == 'Test FREC Agency'
    assert obj['awarding_sub_tier_agency_n'] == 'Test Frec Subtier Agency'
def test_awarding_agency_cgac(database):
    initialize_db_values(database)

    obj = initialize_test_obj(sub_tier_code='1234')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT,
                           FPDS_OFFICE_DICT)
    assert obj['awarding_agency_code'] == '000'
    assert obj['awarding_agency_name'] == 'Test CGAC Agency'
    assert obj['awarding_sub_tier_agency_n'] == 'Test Subtier Agency'
def test_derive_parent_duns_multiple(database):
    initialize_db_values(database)

    obj = initialize_test_obj(awardee_or_recipient_uniqu='234567890')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT,
                           FPDS_OFFICE_DICT)

    assert obj['ultimate_parent_legal_enti'] == 'Parent 2'
    assert obj['ultimate_parent_unique_ide'] == '234567890'
def test_split_zip(database):
    initialize_db_values(database)

    # testing with 5-digit
    obj = initialize_test_obj(ppop_zip4a='12345')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT,
                           FPDS_OFFICE_DICT)
    assert obj['place_of_performance_zip5'] == '12345'
    assert obj['place_of_perform_zip_last4'] is None

    # testing with 9-digit
    obj = initialize_test_obj(ppop_zip4a='123456789')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT,
                           FPDS_OFFICE_DICT)
    assert obj['place_of_performance_zip5'] == '12345'
    assert obj['place_of_perform_zip_last4'] == '6789'

    # testing with 9-digit and dash
    obj = initialize_test_obj(ppop_zip4a='12345-6789')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT,
                           FPDS_OFFICE_DICT)
    assert obj['place_of_performance_zip5'] == '12345'
    assert obj['place_of_perform_zip_last4'] == '6789'

    # testing with city-wide
    obj = initialize_test_obj(ppop_zip4a='city-wide')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT,
                           FPDS_OFFICE_DICT)
    assert obj['place_of_performance_zip5'] is None
    assert obj['place_of_perform_zip_last4'] is None

    # testing without ppop_zip4
    obj = initialize_test_obj(ppop_zip4a='')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT,
                           FPDS_OFFICE_DICT)
    assert obj['place_of_performance_zip5'] is None
    assert obj['place_of_perform_zip_last4'] is None
Ejemplo n.º 13
0
def test_ppop_state(database):
    initialize_db_values(database)

    obj = initialize_test_obj()
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['place_of_perfor_state_code'] == 'NY'
    assert obj['place_of_perform_state_nam'] == 'New York'

    obj = initialize_test_obj(ppop_code='00*****')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['place_of_perfor_state_code'] is None
    assert obj['place_of_perform_state_nam'] == 'Multi-state'

    obj = initialize_test_obj(ppop_code='', record_type=3)
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['place_of_perfor_state_code'] is None
    assert obj['place_of_perform_state_nam'] is None
Ejemplo n.º 14
0
def test_total_funding_amount(database):
    initialize_db_values(database)

    # when fao and nffa are empty
    obj = initialize_test_obj()
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['total_funding_amount'] == 0

    # when one of fao and nffa is empty and the other isn't
    obj = initialize_test_obj(fao=5.3)
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['total_funding_amount'] == 5.3

    # when fao and nffa aren't empty
    obj = initialize_test_obj(fao=-10.6, nffa=123)
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['total_funding_amount'] == 112.4
def test_funding_sub_tier_agency_na(database):
    initialize_db_values(database)

    # when funding_sub_tier_agency_co is not provided
    obj = initialize_test_obj()
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT,
                           FPDS_OFFICE_DICT)
    assert obj['funding_sub_tier_agency_na'] is None
    assert obj['funding_agency_code'] is None
    assert obj['funding_agency_name'] is None

    # when funding_sub_tier_agency_co is provided
    obj = initialize_test_obj(sub_fund_agency_code='1234')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT,
                           FPDS_OFFICE_DICT)
    assert obj['funding_sub_tier_agency_na'] == 'Test Subtier Agency'
    assert obj['funding_agency_code'] == '000'
    assert obj['funding_agency_name'] == 'Test CGAC Agency'
Ejemplo n.º 16
0
def test_is_active(database):
    initialize_db_values(database)

    # Testing with none values
    obj = initialize_test_obj()
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['is_active'] is True

    # Testing with value other than D
    obj = initialize_test_obj(cdi='c')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['is_active'] is True

    # Testing with D
    obj = initialize_test_obj(cdi='D')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['is_active'] is False
def test_derive_executive_compensation(database):
    initialize_db_values(database)

    # Test when values are null
    obj = initialize_test_obj()
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT,
                           EXEC_COMP_DICT)

    # If the first 2 are null, the rest will be too
    assert obj['high_comp_officer1_full_na'] is None
    assert obj['high_comp_officer1_amount'] is None

    # Test when DUNS doesn't have exec comp data associated
    obj = initialize_test_obj(awardee_or_recipient_uniqu='345678901')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT,
                           EXEC_COMP_DICT)

    # If the first 2 are null, the rest will be too
    assert obj['high_comp_officer1_full_na'] is None
    assert obj['high_comp_officer1_amount'] is None

    # Test with DUNS that has exec comp data
    obj = initialize_test_obj(awardee_or_recipient_uniqu='123456789')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT,
                           EXEC_COMP_DICT)

    assert obj['high_comp_officer1_full_na'] == 'Officer 1'
    assert obj['high_comp_officer1_amount'] == '15'
    assert obj['high_comp_officer2_full_na'] == 'Officer 2'
    assert obj['high_comp_officer2_amount'] == '77.12'
    assert obj['high_comp_officer3_full_na'] == 'This is the third Officer'
    assert obj['high_comp_officer3_amount'] is None
    assert obj['high_comp_officer4_full_na'] is None
    assert obj['high_comp_officer4_amount'] == '0'
    assert obj['high_comp_officer5_full_na'] is None
    assert obj['high_comp_officer5_amount'] is None
Ejemplo n.º 18
0
def test_legal_entity_derivations(database):
    initialize_db_values(database)

    # if there is a legal_entity_zip5, record_type is always 2 or 3
    # when we have legal_entity_zip5 and zip4
    obj = initialize_test_obj(le_zip5='12345', le_zip4='6789')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['legal_entity_city_name'] == 'Test City'
    assert obj['legal_entity_congressional'] == '01'
    assert obj['legal_entity_county_code'] == '001'
    assert obj['legal_entity_county_name'] == 'Test County'
    assert obj['legal_entity_state_code'] == 'NY'
    assert obj['legal_entity_state_name'] == 'New York'

    # when we have legal_entity_zip5 but no zip4
    obj = initialize_test_obj(le_zip5='12345')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['legal_entity_city_name'] == 'Test City'
    # there are multiple options so this should be 90
    assert obj['legal_entity_congressional'] == '90'
    assert obj['legal_entity_county_code'] == '001'
    assert obj['legal_entity_county_name'] == 'Test County'
    assert obj['legal_entity_state_code'] == 'NY'
    assert obj['legal_entity_state_name'] == 'New York'

    # when we have legal_entity_zip5 and congressional but no zip4
    obj = initialize_test_obj(le_zip5='12345', legal_congr='95')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['legal_entity_congressional'] == '95'

    # if there is no legal_entity_zip5 and record_type is 1, ppop_code is always in format XX**###
    obj = initialize_test_obj(record_type=1, ppop_cd='03', ppop_code='NY**001')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['legal_entity_city_name'] is None
    assert obj['legal_entity_congressional'] == '03'
    assert obj['legal_entity_county_code'] == '001'
    assert obj['legal_entity_county_name'] == 'Test County'
    assert obj['legal_entity_state_code'] == 'NY'
    assert obj['legal_entity_state_name'] == 'New York'

    # if there is no legal_entity_zip5, record_type is always 1 and ppop_code can be format XX*****
    obj = initialize_test_obj(record_type=1, ppop_cd=None, ppop_code='NY*****')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['legal_entity_city_name'] is None
    assert obj['legal_entity_congressional'] is None
    assert obj['legal_entity_county_code'] is None
    assert obj['legal_entity_county_name'] is None
    assert obj['legal_entity_state_code'] == 'NY'
    assert obj['legal_entity_state_name'] == 'New York'

    # if there is no legal_entity_zip5, record_type is always 1 and ppop_code can be format 00FORGN
    obj = initialize_test_obj(record_type=1, ppop_cd=None, ppop_code='00FORGN')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['legal_entity_city_name'] is None
    assert obj['legal_entity_congressional'] is None
    assert obj['legal_entity_county_code'] is None
    assert obj['legal_entity_county_name'] is None
    assert obj['legal_entity_state_code'] is None
    assert obj['legal_entity_state_name'] is None
Ejemplo n.º 19
0
def test_ppop_derivations(database):
    initialize_db_values(database)

    # when ppop_zip4a is 5 digits and no congressional district
    obj = initialize_test_obj(ppop_zip4a='123454321')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['place_of_performance_congr'] == '02'
    assert obj['place_of_perform_county_co'] == '001'
    assert obj['place_of_perform_county_na'] == 'Test County'
    assert obj['place_of_performance_city'] == 'Test City'

    # when ppop_zip4a is 5 digits and has congressional district
    obj = initialize_test_obj(ppop_zip4a='12345-4321', ppop_cd='03')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['place_of_performance_congr'] == '03'

    # when ppop_zip4a is 5 digits
    obj = initialize_test_obj(ppop_zip4a='12345')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    # cd should be 90 if there's more than one option
    assert obj['place_of_performance_congr'] == '90'
    assert obj['place_of_perform_county_co'] == '001'
    assert obj['place_of_perform_county_na'] == 'Test County'
    assert obj['place_of_performance_city'] == 'Test City'

    # when ppop_zip4 is 9 digits but last 4 are invalid (one cd available)
    obj = initialize_test_obj(ppop_zip4a='543210000')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['place_of_performance_congr'] == '05'
    assert obj['place_of_perform_county_co'] == '001'
    assert obj['place_of_perform_county_na'] == 'Test County'
    assert obj['place_of_performance_city'] == 'Test City 2'

    # when ppop_zip4 is 9 digits (no cd available)
    obj = initialize_test_obj(ppop_zip4a='987654321')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['place_of_performance_congr'] == '90'
    assert obj['place_of_perform_county_co'] == '001'
    assert obj['place_of_perform_county_na'] == 'Test County'
    assert obj['place_of_performance_city'] == 'Test City 3'

    # when we don't have ppop_zip4a and ppop_code is in XX**### format
    obj = initialize_test_obj(ppop_code='NY**001')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['place_of_perform_county_co'] == '001'
    assert obj['place_of_perform_county_na'] == 'Test County'
    assert obj['place_of_performance_city'] is None
    assert obj['place_of_performance_congr'] is None

    # when we don't have ppop_zip4a and ppop_code is in XX##### format
    obj = initialize_test_obj(ppop_code='NY00001')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['place_of_perform_county_co'] == '001'
    assert obj['place_of_perform_county_na'] == 'Test City County'
    assert obj['place_of_performance_city'] == 'Test City'
    assert obj['place_of_performance_congr'] is None

    # when we don't have a ppop_code at all
    obj = initialize_test_obj(ppop_code='', record_type=3)
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['place_of_perform_county_co'] is None
    assert obj['place_of_perform_county_na'] is None
    assert obj['place_of_performance_city'] is None
    assert obj['place_of_performance_congr'] is None
Ejemplo n.º 20
0
def test_derive_office_data(database):
    initialize_db_values(database)

    # if office_code is present, get office name
    obj = initialize_test_obj()
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['awarding_office_name'] == 'Office'
    assert obj['funding_office_name'] == 'Office'

    # if office_code is not present, derive it from historical data (record type 2 or 3 uses fain, ignores uri)
    # In this case, there is no funding office but there is an awarding office
    obj = initialize_test_obj(awarding_office=None,
                              funding_office=None,
                              fain='12345',
                              award_mod_amend='1')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['awarding_office_code'] == '033103'
    assert obj['awarding_office_name'] == 'Office'
    assert obj['funding_office_code'] is None
    assert obj['funding_office_name'] is None

    # if office_code is not present, and no valid fain is given, office code and name are blank
    obj = initialize_test_obj(awarding_office=None,
                              funding_office=None,
                              fain='54321',
                              award_mod_amend='1')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['awarding_office_code'] is None
    assert obj['awarding_office_name'] is None
    assert obj['funding_office_code'] is None
    assert obj['funding_office_name'] is None

    # if office_code is not present, and valid fain is given, with no office codes, office code and name are blank
    # In this case, funding office is present, awarding office is not
    obj = initialize_test_obj(awarding_office=None,
                              funding_office=None,
                              fain='123456',
                              award_mod_amend='1')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['awarding_office_code'] is None
    assert obj['awarding_office_name'] is None
    assert obj['funding_office_code'] == '033103'
    assert obj['funding_office_name'] == 'Office'

    # if office_code is not present, derive it from historical data (record type 1 uses uri, ignores fain)
    # In this case, awarding office is present, funding office is not
    obj = initialize_test_obj(awarding_office=None,
                              funding_office=None,
                              uri='654321',
                              record_type=1,
                              award_mod_amend='1')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['awarding_office_code'] == '033103'
    assert obj['awarding_office_name'] == 'Office'
    assert obj['funding_office_code'] is None
    assert obj['funding_office_name'] is None

    # if office_code is not present, and no valid uri is given, office code and name are blank
    obj = initialize_test_obj(awarding_office=None,
                              funding_office=None,
                              uri='54321',
                              record_type=1,
                              award_mod_amend='1')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['awarding_office_code'] is None
    assert obj['awarding_office_name'] is None
    assert obj['funding_office_code'] is None
    assert obj['funding_office_name'] is None

    # if office_code is not present, and valid uri is given, with no office codes, office code and name are blank
    # In this case, funding office is present, awarding office is not
    obj = initialize_test_obj(awarding_office=None,
                              funding_office=None,
                              uri='7654321',
                              record_type=1,
                              award_mod_amend='1')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['awarding_office_code'] is None
    assert obj['awarding_office_name'] is None
    assert obj['funding_office_code'] == '033103'
    assert obj['funding_office_name'] == 'Office'

    # if office_code is not present and valid uri is given but it's record type 2, everything should be empty
    obj = initialize_test_obj(awarding_office=None,
                              funding_office=None,
                              uri='654321',
                              award_mod_amend='1')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['awarding_office_code'] is None
    assert obj['awarding_office_name'] is None
    assert obj['funding_office_code'] is None
    assert obj['funding_office_name'] is None

    # if office_code is not present and valid fain is given but it's record type 1, everything should be empty
    obj = initialize_test_obj(awarding_office=None,
                              funding_office=None,
                              fain='12345',
                              record_type=1,
                              award_mod_amend='1')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['awarding_office_code'] is None
    assert obj['awarding_office_name'] is None
    assert obj['funding_office_code'] is None
    assert obj['funding_office_name'] is None

    # if office_code is not present and mod number is the same as the base record, do not derive it from historical data
    obj = initialize_test_obj(awarding_office=None,
                              funding_office=None,
                              fain='12345',
                              award_mod_amend='0')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['awarding_office_code'] is None
    assert obj['awarding_office_name'] is None
    assert obj['funding_office_code'] is None
    assert obj['funding_office_name'] is None

    # if office_code is not present and mod number is the same as the base record, do not derive it from historical data
    obj = initialize_test_obj(awarding_office=None,
                              funding_office=None,
                              uri='654321',
                              record_type=1,
                              award_mod_amend=None)
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['awarding_office_code'] is None
    assert obj['awarding_office_name'] is None
    assert obj['funding_office_code'] is None
    assert obj['funding_office_name'] is None

    # if office_code is not present and mod number is different from the base record, but the base office code is
    # invalid, do not derive
    obj = initialize_test_obj(awarding_office=None,
                              funding_office=None,
                              uri='efg',
                              record_type=1,
                              award_mod_amend='1')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['awarding_office_code'] is None
    assert obj['awarding_office_name'] is None
    assert obj['funding_office_code'] is None
    assert obj['funding_office_name'] is None

    # if office_code is not present and mod number is different from the base record and the base office code is
    # valid but is not a grant/funding code, do not derive
    obj = initialize_test_obj(awarding_office=None,
                              funding_office=None,
                              uri='abcd',
                              record_type=1,
                              award_mod_amend='1')
    obj = fabs_derivations(obj, database.session, STATE_DICT, COUNTRY_DICT,
                           SUB_TIER_DICT, CFDA_DICT, COUNTY_DICT, OFFICE_DICT)
    assert obj['awarding_office_code'] is None
    assert obj['awarding_office_name'] is None
    assert obj['funding_office_code'] is None
    assert obj['funding_office_name'] is None