def test_success_populated_ata_frec(database): """ Tests that TAS for SF-133 are present in File A for FREC submissions Note this aspect of the filter is only relevant to FRECs 1601 and 1125 """ submission_id = randint(1000, 10000) tas, period, year, cgac_code, frec_code = 'some-tas', 2, 2002, '016', '1601' sf = SF133Factory(tas=tas, period=period, fiscal_year=year, allocation_transfer_agency=cgac_code, agency_identifier='some-other-code') submission = SubmissionFactory(submission_id=submission_id, reporting_fiscal_period=period, reporting_fiscal_year=year, cgac_code=None, frec_code=frec_code) ap = AppropriationFactory(tas=tas, submission_id=submission_id) assert error_rows(_FILE, database, models=[sf, ap], submission=submission) == [] submission_id = randint(1000, 10000) tas, period, year, cgac_code, frec_code = 'some-tas', 2, 2002, '011', '1125' sf = SF133Factory(tas=tas, period=period, fiscal_year=year, allocation_transfer_agency=cgac_code, agency_identifier='some-other-code') submission = SubmissionFactory(submission_id=submission_id, reporting_fiscal_period=period, reporting_fiscal_year=year, cgac_code=None, frec_code=frec_code) ap = AppropriationFactory(tas=tas, submission_id=submission_id) assert error_rows(_FILE, database, models=[sf, ap], submission=submission) == [] # testing with a not special FREC to show it'd still pass cause it doesn't link submission_id = randint(1000, 10000) tas, period, year, cgac_code, frec_code = 'some-tas', 2, 2002, '011', '1124' sf = SF133Factory(tas=tas, period=period, fiscal_year=year, allocation_transfer_agency=cgac_code, agency_identifier='some-other-code') submission = SubmissionFactory(submission_id=submission_id, reporting_fiscal_period=period, reporting_fiscal_year=year, cgac_code=None, frec_code=frec_code) ap = AppropriationFactory(tas='a-different-tas', submission_id=submission_id) assert error_rows(_FILE, database, models=[sf, ap], submission=submission) == []
def test_success(database): """ Tests that OtherBudgetaryResourcesAmount_CPE is provided if TAS has borrowing, contract, and/or spending authority provided in File A. """ tas = "".join([_TAS, "_success"]) ap1 = AppropriationFactory(tas=tas, other_budgetary_resources_cpe=1, borrowing_authority_amount_cpe=1, contract_authority_amount_cpe=0, spending_authority_from_of_cpe=0) ap2 = AppropriationFactory(tas=tas, other_budgetary_resources_cpe=1, borrowing_authority_amount_cpe=0, contract_authority_amount_cpe=1, spending_authority_from_of_cpe=0) ap3 = AppropriationFactory(tas=tas, other_budgetary_resources_cpe=1, borrowing_authority_amount_cpe=0, contract_authority_amount_cpe=0, spending_authority_from_of_cpe=1) ap4 = AppropriationFactory(tas=tas, other_budgetary_resources_cpe=0, borrowing_authority_amount_cpe=0, contract_authority_amount_cpe=0, spending_authority_from_of_cpe=0) assert number_of_errors(_FILE, database, models=[ap1, ap2, ap3, ap4]) == 0
def test_success(database): """ Tests that SF 133 amount sum for lines 1340, 1440 matches Appropriation borrowing_authority_amount_cpe for the specified fiscal year and period """ tas_1 = "".join([_TAS, "_success"]) tas_2 = "".join([_TAS, "_success_2"]) sf_1 = SF133Factory(line=1340, tas=tas_1, period=1, fiscal_year=2016, amount=1) sf_2 = SF133Factory(line=1440, tas=tas_1, period=1, fiscal_year=2016, amount=1) sf_3 = SF133Factory(line=1340, tas=tas_2, period=1, fiscal_year=2016, amount=0) sf_4 = SF133Factory(line=1440, tas=tas_2, period=1, fiscal_year=2016, amount=0) ap_1 = AppropriationFactory(tas=tas_1, borrowing_authority_amount_cpe=2) ap_2 = AppropriationFactory(tas=tas_2, borrowing_authority_amount_cpe=None) assert number_of_errors(_FILE, database, models=[sf_1, sf_2, sf_3, sf_4, ap_1, ap_2]) == 0
def test_success(database): """ Test that TAS values can be found, and null matches work correctly""" tas = TASFactory() tas_null = TASFactory(allocation_transfer_agency=None, availability_type_code=None, sub_account_code=None) approp = AppropriationFactory( allocation_transfer_agency=tas.allocation_transfer_agency, agency_identifier=tas.agency_identifier, beginning_period_of_availa=tas.beginning_period_of_availability, ending_period_of_availabil=tas.ending_period_of_availability, availability_type_code=tas.availability_type_code, main_account_code=tas.main_account_code, sub_account_code=tas.sub_account_code) approp_null = AppropriationFactory( allocation_transfer_agency=tas_null.allocation_transfer_agency, agency_identifier=tas_null.agency_identifier, beginning_period_of_availa=tas_null.beginning_period_of_availability, ending_period_of_availabil=tas_null.ending_period_of_availability, availability_type_code=tas_null.availability_type_code, main_account_code=tas_null.main_account_code, sub_account_code=tas_null.sub_account_code) errors = number_of_errors(_FILE, database, models=[tas, tas_null, approp, approp_null]) assert errors == 0
def test_failure(database): """ Test failure TotalBudgetaryResources_CPE = BudgetAuthorityAppropriatedAmount_CPE + BudgetAuthorityUnobligatedBalanceBroughtForward_FYB + AdjustmentsToUnobligatedBalanceBroughtForward_CPE + OtherBudgetaryResourcesAmount_CPE + SF 133 Line 1902 """ approp = AppropriationFactory(total_budgetary_resources_cpe=1200, budget_authority_appropria_cpe=100, budget_authority_unobligat_fyb=200, adjustments_to_unobligated_cpe=300, other_budgetary_resources_cpe=400, tas='abcd') approp_null = AppropriationFactory(total_budgetary_resources_cpe=800, budget_authority_appropria_cpe=100, budget_authority_unobligat_fyb=200, adjustments_to_unobligated_cpe=300, other_budgetary_resources_cpe=None, tas='abcd') approp_wrong_tas = AppropriationFactory(total_budgetary_resources_cpe=1000, budget_authority_appropria_cpe=100, budget_authority_unobligat_fyb=200, adjustments_to_unobligated_cpe=300, other_budgetary_resources_cpe=400, tas='bcda') # approp_wrong sf_1 = SF133Factory(line=1902, tas='bcda', period=1, fiscal_year=2016, amount=100) errors = number_of_errors( _FILE, database, models=[approp, approp_null, approp_wrong_tas, sf_1]) assert errors == 3
def test_failure(database): """ Test that tas that does not match is an error""" tas = TASFactory(agency_identifier=100) tas_null = TASFactory(agency_identifier=101, allocation_transfer_agency=None, availability_type_code=None, sub_account_code=None) approp = AppropriationFactory( allocation_transfer_agency=tas.allocation_transfer_agency, agency_identifier=102, beginning_period_of_availa=tas.beginning_period_of_availability, ending_period_of_availabil=tas.ending_period_of_availability, availability_type_code=tas.availability_type_code, main_account_code=tas.main_account_code, sub_account_code=tas.sub_account_code) approp_null = AppropriationFactory( allocation_transfer_agency=tas_null.allocation_transfer_agency, agency_identifier=103, beginning_period_of_availa=tas_null.beginning_period_of_availability, ending_period_of_availabil=tas_null.ending_period_of_availability, availability_type_code=tas_null.availability_type_code, main_account_code=tas_null.main_account_code, sub_account_code=tas_null.sub_account_code) # Non-overlapping ranges of agency IDs should generate two errors errors = number_of_errors(_FILE, database, models=[tas, tas_null, approp, approp_null]) assert errors == 2
def test_success(database): """ Test that agency codes are matched against cgac correctly """ approp = AppropriationFactory() approp_null = AppropriationFactory(agency_identifier = None) cgac = CGACFactory(cgac_code = approp.agency_identifier) errors = number_of_errors(_FILE, database, models=[approp, approp_null, cgac]) assert errors == 0
def test_success(database): """ Test that calculation works for equal values and for null """ value = Decimal('100.23') approp = AppropriationFactory(status_of_budgetary_resour_cpe=value, total_budgetary_resources_cpe=value) approp_null = AppropriationFactory(status_of_budgetary_resour_cpe=0, total_budgetary_resources_cpe=None) errors = number_of_errors(_FILE, database, models=[approp, approp_null]) assert errors == 0
def test_success(database): """ Test that availability type code is either x or absent """ approp = AppropriationFactory(availability_type_code = 'X') approp_lower = AppropriationFactory(availability_type_code = 'x') approp_null = AppropriationFactory(availability_type_code = None) errors = number_of_errors(_FILE, database, models=[approp, approp_lower, approp_null]) assert errors == 0
def test_success(database): """ Test that TAS values can be found, and null matches work correctly""" approp = AppropriationFactory(status_of_budgetary_resour_cpe = 300, obligations_incurred_total_cpe = 100, unobligated_balance_cpe = 200) approp_null = AppropriationFactory(status_of_budgetary_resour_cpe = 100, obligations_incurred_total_cpe = 100, unobligated_balance_cpe = None) errors = number_of_errors(_FILE, database, models=[approp, approp_null]) assert errors == 0
def test_success(database): """ Test that TAS values can be found, and null matches work correctly""" approp = AppropriationFactory(other_budgetary_resources_cpe = 600, contract_authority_amount_cpe = 100, borrowing_authority_amount_cpe = 200, spending_authority_from_of_cpe = 300) approp_null = AppropriationFactory(other_budgetary_resources_cpe = 300, contract_authority_amount_cpe = 100, borrowing_authority_amount_cpe = 200, spending_authority_from_of_cpe = None) errors = number_of_errors(_FILE, database, models=[approp, approp_null]) assert errors == 0
def test_failure(database): """ Tests that TAS values in File A are unique """ tas = TASFactory() database.session.add(tas) database.session.flush() ap1 = AppropriationFactory(row_number=1, tas_id=tas.tas_id) ap2 = AppropriationFactory(row_number=2, tas_id=tas.tas_id) assert number_of_errors(_FILE, database, models=[ap1, ap2]) == 2
def test_success(database): """ Test that TAS values can be found, and null matches work correctly""" approp = AppropriationFactory(budget_authority_available_cpe = 1000, budget_authority_appropria_cpe = 100, budget_authority_unobligat_fyb = 200, adjustments_to_unobligated_cpe = 300, other_budgetary_resources_cpe = 400) approp_null = AppropriationFactory(budget_authority_available_cpe = 600, budget_authority_appropria_cpe = 100, budget_authority_unobligat_fyb = 200, adjustments_to_unobligated_cpe = 300, other_budgetary_resources_cpe = None) errors = number_of_errors(_FILE, database, models=[approp, approp_null]) assert errors == 0
def test_failure(database): """ Test that tas that does not match is an error""" approp = AppropriationFactory(status_of_budgetary_resour_cpe = 500, obligations_incurred_total_cpe = 100, unobligated_balance_cpe = 200) approp_null = AppropriationFactory(status_of_budgetary_resour_cpe = 300, obligations_incurred_total_cpe = 100, unobligated_balance_cpe = None) errors = number_of_errors(_FILE, database, models=[approp, approp_null]) assert errors == 2
def test_failure(database): """ Test that tas that does not match is an error""" approp = AppropriationFactory(budget_authority_available_cpe = 1200, budget_authority_appropria_cpe = 100, budget_authority_unobligat_fyb = 200, adjustments_to_unobligated_cpe = 300, other_budgetary_resources_cpe = 400) approp_null = AppropriationFactory(budget_authority_available_cpe = 800, budget_authority_appropria_cpe = 100, budget_authority_unobligat_fyb = 200, adjustments_to_unobligated_cpe = 300, other_budgetary_resources_cpe = None) errors = number_of_errors(_FILE, database, models=[approp, approp_null]) assert errors == 2
def test_failure(database): """ Test that tas that does not match is an error""" approp = AppropriationFactory(other_budgetary_resources_cpe = 800, contract_authority_amount_cpe = 100, borrowing_authority_amount_cpe = 200, spending_authority_from_of_cpe = 300) approp_null = AppropriationFactory(other_budgetary_resources_cpe = 500, contract_authority_amount_cpe = 100, borrowing_authority_amount_cpe = 200, spending_authority_from_of_cpe = None) errors = number_of_errors(_FILE, database, models=[approp, approp_null]) assert errors == 2
def test_success(database): """ Tests that TAS values in File A are not unique """ tas1 = TASFactory() tas2 = TASFactory() database.session.add_all([tas1, tas2]) database.session.flush() ap1 = AppropriationFactory(row_number=1, tas_id=tas1.tas_id) ap2 = AppropriationFactory(row_number=2, tas_id=tas2.tas_id) assert number_of_errors(_FILE, database, models=[ap1, ap2]) == 0
def test_success(database): """ Tests that TAS for File A are present in SF-133 """ tas = "".join([_TAS, "_success"]) ap1 = AppropriationFactory(job_id=1, row_number=1, tas=tas) ap2 = AppropriationFactory(job_id=1, row_number=2, tas=tas) sf = SF133Factory(line=1021, tas=tas, period=1, fiscal_year=2016, amount=1, agency_identifier="sys", main_account_code="000", sub_account_code="000") assert number_of_errors(_FILE, database, models=[ap1, ap2, sf]) == 0
def test_success(database): """ Tests that Beginning Period of Availability and Ending Period of Availability are blank if Availability Type Code = X """ tas = "".join([_TAS, "_success"]) ap1 = AppropriationFactory(availability_type_code='x', beginning_period_of_availa=None, ending_period_of_availabil=None) ap2 = AppropriationFactory(availability_type_code='X', beginning_period_of_availa=None, ending_period_of_availabil=None) assert number_of_errors(_FILE, database, models=[ap1, ap2]) == 0
def test_failure_populated_ata_frec(database): """ Tests that TAS for SF-133 are present in File A for FREC submissions Note this aspect of the filter is only relevant to FRECs 1601 and 1125 """ submission_id = randint(1000, 10000) tas, period, year, cgac_code, frec_code = 'some-tas', 2, 2002, '016', '1601' sf = SF133Factory(tas=tas, period=period, fiscal_year=year, allocation_transfer_agency=cgac_code, agency_identifier='some-other-code') submission = SubmissionFactory(submission_id=submission_id, reporting_fiscal_period=period, reporting_fiscal_year=year, cgac_code=None, frec_code=frec_code) ap = AppropriationFactory(tas='a-different-tas', submission_id=submission_id) errors = number_of_errors(_FILE, database, models=[sf, ap], submission=submission) assert errors == 1 submission_id = randint(1000, 10000) tas, period, year, cgac_code, frec_code = 'some-tas', 2, 2002, '011', '1125' sf = SF133Factory(tas=tas, period=period, fiscal_year=year, allocation_transfer_agency=cgac_code, agency_identifier='some-other-code') submission = SubmissionFactory(submission_id=submission_id, reporting_fiscal_period=period, reporting_fiscal_year=year, cgac_code=None, frec_code=frec_code) ap = AppropriationFactory(tas='a-different-tas', submission_id=submission_id) errors = number_of_errors(_FILE, database, models=[sf, ap], submission=submission) assert errors == 1
def test_failure(database): """ Tests that, for entries with the matching TAS, Appropriations deobligations_recoveries_r_cpe does not equals the sum of all corresponding entries for Object Class Program Acitivity fields ussgl487100_downward_adjus_cpe, ussgl497100_downward_adjus_cpe, ussgl487200_downward_adjus_cpe, ussgl497200_downward_adjus_cpe""" tas_ignore = ''.join([_TAS + "_ignore"]) ap = AppropriationFactory(tas=_TAS, deobligations_recoveries_r_cpe=7) op_1 = ObjectClassProgramActivityFactory(tas=_TAS, ussgl487100_downward_adjus_cpe=1, ussgl497100_downward_adjus_cpe=1, ussgl487200_downward_adjus_cpe=1, ussgl497200_downward_adjus_cpe=1) op_2 = ObjectClassProgramActivityFactory(tas=_TAS, ussgl487100_downward_adjus_cpe=1, ussgl497100_downward_adjus_cpe=1, ussgl487200_downward_adjus_cpe=1, ussgl497200_downward_adjus_cpe=1) op_3 = ObjectClassProgramActivityFactory(tas=tas_ignore, ussgl487100_downward_adjus_cpe=1, ussgl497100_downward_adjus_cpe=1, ussgl487200_downward_adjus_cpe=1, ussgl497200_downward_adjus_cpe=1) assert number_of_errors(_FILE, database, models=[ap, op_1, op_2, op_3]) == 1
def test_success_scenario2(database): tas1 = TASFactory() tas2 = TASFactory() database.session.add_all([tas1, tas2]) database.session.flush() ap = AppropriationFactory(tas_id=tas1.tas_id, deobligations_recoveries_r_cpe=8) # Contributes 4 op_1 = ObjectClassProgramActivityFactory(tas_id=tas1.tas_id, ussgl487100_downward_adjus_cpe=1, ussgl497100_downward_adjus_cpe=1, ussgl487200_downward_adjus_cpe=1, ussgl497200_downward_adjus_cpe=1) # Contributes another 4 op_2 = ObjectClassProgramActivityFactory(tas_id=tas1.tas_id, ussgl487100_downward_adjus_cpe=1, ussgl497100_downward_adjus_cpe=1, ussgl487200_downward_adjus_cpe=1, ussgl497200_downward_adjus_cpe=1) # Doesn't contribute, different TAS op_3 = ObjectClassProgramActivityFactory(tas_id=tas2.tas_id, ussgl487100_downward_adjus_cpe=1, ussgl497100_downward_adjus_cpe=1, ussgl487200_downward_adjus_cpe=1, ussgl497200_downward_adjus_cpe=1) assert number_of_errors(_FILE, database, models=[ap, op_1, op_2, op_3]) == 0
def test_failure_populated_011_fr_entity_cgac(database): """ Tests that TAS for SF-133 are present in File A for CGAC submissions """ submission_id = randint(1000, 10000) tas, account_num, period, year, cgac_code, frec_code = 'some-tas', 1, 2, 2002, 'some-cgac-code', 'some-frec-code' cgac = CGACFactory(cgac_code=cgac_code, cgac_id=1) frec = FRECFactory(cgac_id=cgac.cgac_id, frec_code=frec_code, frec_id=1) sf1 = SF133Factory(tas=tas, period=period, fiscal_year=year, allocation_transfer_agency=None, agency_identifier='011', account_num=account_num) ts1 = TASFactory(account_num=account_num, fr_entity_type=frec_code) submission = SubmissionFactory(submission_id=submission_id, reporting_fiscal_period=period, reporting_fiscal_year=year, cgac_code=cgac_code, frec_code=None) ap = AppropriationFactory(tas='a-different-tas', submission_id=submission_id) errors = number_of_errors(_FILE, database, models=[cgac, frec, sf1, ts1, ap], submission=submission) assert errors == 1
def test_failure(database): """ Tests that, for entries with the matching TAS, Appropriations deobligations_recoveries_r_cpe does not equals the sum of all corresponding entries for Object Class Program Acitivity fields ussgl487100_downward_adjus_cpe, ussgl497100_downward_adjus_cpe, ussgl487200_downward_adjus_cpe, ussgl497200_downward_adjus_cpe""" tas = TASFactory() database.session.add(tas) database.session.flush() ap = AppropriationFactory(tas_id=tas.tas_id, deobligations_recoveries_r_cpe=7) # Contributes 4 op_1 = ObjectClassProgramActivityFactory(tas_id=tas.tas_id, ussgl487100_downward_adjus_cpe=1, ussgl497100_downward_adjus_cpe=1, ussgl487200_downward_adjus_cpe=1, ussgl497200_downward_adjus_cpe=1) # Contributes another 4 op_2 = ObjectClassProgramActivityFactory(tas_id=tas.tas_id, ussgl487100_downward_adjus_cpe=1, ussgl497100_downward_adjus_cpe=1, ussgl487200_downward_adjus_cpe=1, ussgl497200_downward_adjus_cpe=1) assert number_of_errors(_FILE, database, models=[ap, op_1, op_2]) == 1
def test_failure(database): """ Test that calculation fails for unequal values """ approp = AppropriationFactory(status_of_budgetary_resour_cpe=Decimal(101.23), total_budgetary_resources_cpe=Decimal(102.34)) errors = number_of_errors(_FILE, database, models=[approp]) assert errors == 1
def test_failure_populated_ata_cgac(database): """ Tests that TAS for SF-133 are not present in File A for CGAC submissions """ submission_id = randint(1000, 10000) tas, period, year, code = 'some-tas', 2, 2002, 'some-code' sf1 = SF133Factory(tas=tas, period=period, fiscal_year=year, allocation_transfer_agency=code, agency_identifier=code) submission = SubmissionFactory(submission_id=submission_id, reporting_fiscal_period=period, reporting_fiscal_year=year, cgac_code=code, frec_code=None) ap = AppropriationFactory(tas='a-different-tas', submission_id=submission_id) errors = number_of_errors(_FILE, database, models=[sf1, ap], submission=submission) assert errors == 1 # accounting for CGAC 097, should still link with ata 021 submission_id = randint(1000, 10000) tas, period, year, code = 'some-tas', 2, 2002, '097' sf1 = SF133Factory(tas=tas, period=period, fiscal_year=year, allocation_transfer_agency='021', agency_identifier='some-other-code') submission = SubmissionFactory(submission_id=submission_id, reporting_fiscal_period=period, reporting_fiscal_year=year, cgac_code=code, frec_code=None) ap = AppropriationFactory(tas='a-different-tas', submission_id=submission_id) errors = number_of_errors(_FILE, database, models=[sf1, ap], submission=submission) assert errors == 1
def test_success_fyb_none(database): sf = SF133Factory(line=1000, tas=_TAS, period=1, fiscal_year=2016, amount=0) ap = AppropriationFactory(tas=_TAS, budget_authority_unobligat_fyb=None) assert number_of_errors(_FILE, database, models=[sf, ap]) == 0
def test_failure(database): """ Tests that if the SF-133 amount for line 1000 for the same fiscal year and period is populated, then Appropriation budget_authority_unobligat_fyb is not populated """ sf = SF133Factory(line=1000, tas=_TAS, period=1, fiscal_year=2016, amount=1) ap = AppropriationFactory(tas=_TAS, budget_authority_unobligat_fyb=None) assert number_of_errors(_FILE, database, models=[sf, ap]) == 1
def test_financial_tas_approp(database): """ Tests that TAS for File A are not present in SF-133 except when a financial account (financial indicator type F)""" tas_1 = TASFactory(financial_indicator2='other indicator') tas_2 = TASFactory(financial_indicator2=None) ap_1 = AppropriationFactory(tas_id=tas_1.account_num) ap_2 = AppropriationFactory(tas_id=tas_2.account_num) assert number_of_errors(_FILE, database, models=[tas_1, tas_2, ap_1, ap_2]) == 2 tas_3 = TASFactory(financial_indicator2='F') tas_4 = TASFactory(financial_indicator2='f') ap_3 = AppropriationFactory(tas_id=tas_3.account_num) ap_4 = AppropriationFactory(tas_id=tas_4.account_num) assert number_of_errors(_FILE, database, models=[tas_3, tas_4, ap_3, ap_4]) == 0
def test_value_present(database): """budget_authority_unobligat_fyb populated does not require a previous submission""" populate_publish_status(database) sub_new = SubmissionFactory() ap_new = AppropriationFactory(submission_id=sub_new.submission_id) assert number_of_errors(_FILE, database, submission=sub_new, models=[ap_new]) == 0