def test_get_submission_metadata_quarterly_dabs_cgac(database): """ Tests the get_submission_metadata function for quarterly dabs submissions """ sess = database.session now = datetime.datetime.utcnow() now_plus_10 = now + datetime.timedelta(minutes=10) cgac = CGACFactory(cgac_code='001', agency_name='CGAC Agency') frec_cgac = CGACFactory(cgac_code='999', agency_name='FREC CGAC') frec = FRECFactory(frec_code='0001', agency_name='FREC Agency', cgac=frec_cgac) sub = SubmissionFactory(submission_id=1, created_at=now, updated_at=now_plus_10, cgac_code=cgac.cgac_code, reporting_fiscal_period=3, reporting_fiscal_year=2017, is_quarter_format=True, publish_status_id=PUBLISH_STATUS_DICT['updated'], d2_submission=False, number_of_errors=40, number_of_warnings=200) # Job for submission job = JobFactory(submission_id=sub.submission_id, last_validated=now_plus_10, job_type=sess.query(JobType).filter_by(name='csv_record_validation').one(), job_status=sess.query(JobStatus).filter_by(name='finished').one(), file_type=sess.query(FileType).filter_by(name='appropriations').one(), number_of_rows=3, file_size=7655) job_2 = JobFactory(submission_id=sub.submission_id, last_validated=now_plus_10, job_type=sess.query(JobType).filter_by(name='csv_record_validation').one(), job_status=sess.query(JobStatus).filter_by(name='finished').one(), file_type=sess.query(FileType).filter_by(name='program_activity').one(), number_of_rows=7, file_size=12345) sess.add_all([cgac, frec_cgac, frec, sub, job, job_2]) sess.commit() # Test for Quarterly, updated DABS cgac submission expected_results = { 'cgac_code': cgac.cgac_code, 'frec_code': None, 'agency_name': cgac.agency_name, 'number_of_errors': 40, 'number_of_warnings': 200, 'number_of_rows': 10, 'total_size': 20000, 'created_on': now.strftime('%m/%d/%Y'), 'last_updated': now_plus_10.strftime("%Y-%m-%dT%H:%M:%S"), 'last_validated': now_plus_10.strftime('%m/%d/%Y'), 'reporting_period': 'Q1/2017', 'publish_status': 'updated', 'quarterly_submission': True, 'fabs_submission': False, 'fabs_meta': None } results = get_submission_metadata(sub) assert results == expected_results
def test_get_submission_metadata_published_fabs(database): """ Tests the get_submission_metadata function for published fabs submissions """ sess = database.session now = datetime.datetime.utcnow() now_plus_10 = now + datetime.timedelta(minutes=10) start_date = datetime.date(2000, 1, 1) cgac = CGACFactory(cgac_code='001', agency_name='CGAC Agency') frec_cgac = CGACFactory(cgac_code='999', agency_name='FREC CGAC') frec = FRECFactory(frec_code='0001', agency_name='FREC Agency', cgac=frec_cgac) sub = SubmissionFactory(submission_id=5, created_at=now, updated_at=now, cgac_code=cgac.cgac_code, reporting_fiscal_period=5, reporting_fiscal_year=2010, is_quarter_format=False, publish_status_id=PUBLISH_STATUS_DICT['published'], d2_submission=True, reporting_start_date=start_date, number_of_errors=0, number_of_warnings=2) # Data for FABS dafa_1 = DetachedAwardFinancialAssistanceFactory(submission_id=sub.submission_id, is_valid=True) dafa_2 = DetachedAwardFinancialAssistanceFactory(submission_id=sub.submission_id, is_valid=False) cert_hist = CertifyHistoryFactory(submission=sub, created_at=now_plus_10) sess.add_all([cgac, frec_cgac, frec, sub, dafa_1, dafa_2, cert_hist]) sess.commit() expected_results = { 'cgac_code': cgac.cgac_code, 'frec_code': None, 'agency_name': cgac.agency_name, 'number_of_errors': 0, 'number_of_warnings': 2, 'number_of_rows': 0, 'total_size': 0, 'created_on': now.strftime('%m/%d/%Y'), 'last_updated': now.strftime("%Y-%m-%dT%H:%M:%S"), 'last_validated': '', 'reporting_period': start_date.strftime('%m/%Y'), 'publish_status': 'published', 'quarterly_submission': False, 'certified_submission': None, 'fabs_submission': True, 'fabs_meta': { 'publish_date': now_plus_10.strftime('%-I:%M%p %m/%d/%Y'), 'published_file': None, 'total_rows': 2, 'valid_rows': 1 } } results = get_submission_metadata(sub) assert results == expected_results
def test_get_submission_metadata_published_fabs(database): """ Tests the get_submission_metadata function for published fabs submissions """ sess = database.session now = datetime.datetime.utcnow() now_plus_10 = now + datetime.timedelta(minutes=10) start_date = datetime.date(2000, 1, 1) cgac = CGACFactory(cgac_code='001', agency_name='CGAC Agency') frec_cgac = CGACFactory(cgac_code='999', agency_name='FREC CGAC') frec = FRECFactory(frec_code='0001', agency_name='FREC Agency', cgac=frec_cgac) sub = SubmissionFactory(submission_id=5, created_at=now, updated_at=now, cgac_code=cgac.cgac_code, reporting_fiscal_period=5, reporting_fiscal_year=2010, is_quarter_format=False, publish_status_id=PUBLISH_STATUS_DICT['published'], d2_submission=True, reporting_start_date=start_date, number_of_errors=0, number_of_warnings=2) # Data for FABS dafa_1 = DetachedAwardFinancialAssistanceFactory(submission_id=sub.submission_id, is_valid=True) dafa_2 = DetachedAwardFinancialAssistanceFactory(submission_id=sub.submission_id, is_valid=False) cert_hist = CertifyHistoryFactory(submission=sub, created_at=now_plus_10) sess.add_all([cgac, frec_cgac, frec, sub, dafa_1, dafa_2, cert_hist]) sess.commit() expected_results = { 'cgac_code': cgac.cgac_code, 'frec_code': None, 'agency_name': cgac.agency_name, 'number_of_errors': 0, 'number_of_warnings': 2, 'number_of_rows': 0, 'total_size': 0, 'created_on': now.strftime('%m/%d/%Y'), 'last_updated': now.strftime("%Y-%m-%dT%H:%M:%S"), 'last_validated': '', 'reporting_period': start_date.strftime('%m/%Y'), 'publish_status': 'published', 'quarterly_submission': False, 'fabs_submission': True, 'fabs_meta': { 'publish_date': now_plus_10.strftime('%-I:%M%p %m/%d/%Y'), 'published_file': None, 'total_rows': 2, 'valid_rows': 1 } } results = get_submission_metadata(sub) assert results == expected_results
def test_get_submission_metadata_quarterly_dabs_cgac(database): """ Tests the get_submission_metadata function for quarterly dabs submissions """ sess = database.session now = datetime.datetime.utcnow() now_plus_10 = now + datetime.timedelta(minutes=10) cgac = CGACFactory(cgac_code='001', agency_name='CGAC Agency') frec_cgac = CGACFactory(cgac_code='999', agency_name='FREC CGAC') frec = FRECFactory(frec_code='0001', agency_name='FREC Agency', cgac=frec_cgac) sub = SubmissionFactory(submission_id=1, created_at=now, updated_at=now_plus_10, cgac_code=cgac.cgac_code, reporting_fiscal_period=3, reporting_fiscal_year=2017, is_quarter_format=True, publish_status_id=PUBLISH_STATUS_DICT['updated'], d2_submission=False, number_of_errors=40, number_of_warnings=200) # Job for submission job = JobFactory(submission_id=sub.submission_id, last_validated=now_plus_10, job_type_id=JOB_TYPE_DICT['csv_record_validation'], job_status_id=JOB_STATUS_DICT['finished'], file_type_id=FILE_TYPE_DICT['appropriations'], number_of_rows=3, file_size=7655) job_2 = JobFactory(submission_id=sub.submission_id, last_validated=now_plus_10, job_type_id=JOB_TYPE_DICT['csv_record_validation'], job_status_id=JOB_STATUS_DICT['finished'], file_type_id=FILE_TYPE_DICT['program_activity'], number_of_rows=7, file_size=12345) sess.add_all([cgac, frec_cgac, frec, sub, job, job_2]) sess.commit() # Test for Quarterly, updated DABS cgac submission expected_results = { 'cgac_code': cgac.cgac_code, 'frec_code': None, 'agency_name': cgac.agency_name, 'number_of_errors': 40, 'number_of_warnings': 200, 'number_of_rows': 10, 'total_size': 20000, 'created_on': now.strftime('%m/%d/%Y'), 'last_updated': now_plus_10.strftime("%Y-%m-%dT%H:%M:%S"), 'last_validated': now_plus_10.strftime('%Y-%m-%dT%H:%M:%S'), 'reporting_period': 'Q1/2017', 'publish_status': 'updated', 'quarterly_submission': True, 'fabs_submission': False, 'fabs_meta': None } results = get_submission_metadata(sub) assert results == expected_results
def test_get_submission_metadata_test_submission(database): """ Tests the get_submission_metadata function for published fabs submissions """ sess = database.session now = datetime.datetime.utcnow() cgac = CGACFactory(cgac_code='001', agency_name='CGAC Agency') sub1 = SubmissionFactory(submission_id=1, created_at=now, updated_at=now, cgac_code=cgac.cgac_code, reporting_fiscal_period=3, reporting_fiscal_year=2017, is_quarter_format=True, publish_status_id=PUBLISH_STATUS_DICT['updated'], d2_submission=False, number_of_errors=40, number_of_warnings=200) sub2 = SubmissionFactory(submission_id=2, created_at=now, updated_at=now, cgac_code=cgac.cgac_code, reporting_fiscal_period=3, reporting_fiscal_year=2017, is_quarter_format=True, publish_status_id=PUBLISH_STATUS_DICT['unpublished'], d2_submission=False, number_of_errors=40, number_of_warnings=200) sess.add_all([cgac, sub1, sub2]) sess.commit() # Test for test submission expected_results = { 'cgac_code': cgac.cgac_code, 'frec_code': None, 'agency_name': cgac.agency_name, 'number_of_errors': 40, 'number_of_warnings': 200, 'number_of_rows': 0, 'total_size': 0, 'created_on': now.strftime('%m/%d/%Y'), 'last_updated': now.strftime("%Y-%m-%dT%H:%M:%S"), 'last_validated': '', 'reporting_period': 'Q1/2017', 'publish_status': 'unpublished', 'quarterly_submission': True, 'certified_submission': 1, 'fabs_submission': False, 'fabs_meta': None } results = get_submission_metadata(sub2) assert results == expected_results
def test_get_submission_metadata_unpublished_fabs(database): """ Tests the get_submission_metadata function for unpublished fabs submissions """ sess = database.session now = datetime.datetime.utcnow() start_date = datetime.date(2000, 1, 1) cgac = CGACFactory(cgac_code='001', agency_name='CGAC Agency') frec_cgac = CGACFactory(cgac_code='999', agency_name='FREC CGAC') frec = FRECFactory(frec_code='0001', agency_name='FREC Agency', cgac=frec_cgac) sub = SubmissionFactory(submission_id=4, created_at=now, updated_at=now, cgac_code=cgac.cgac_code, reporting_fiscal_period=1, reporting_fiscal_year=2015, is_quarter_format=False, publish_status_id=PUBLISH_STATUS_DICT['unpublished'], d2_submission=True, reporting_start_date=start_date, number_of_errors=4, number_of_warnings=1) sess.add_all([cgac, frec_cgac, frec, sub]) sess.commit() expected_results = { 'cgac_code': cgac.cgac_code, 'frec_code': None, 'agency_name': cgac.agency_name, 'number_of_errors': 4, 'number_of_warnings': 1, 'number_of_rows': 0, 'total_size': 0, 'created_on': now.strftime('%m/%d/%Y'), 'last_updated': now.strftime("%Y-%m-%dT%H:%M:%S"), 'last_validated': '', 'reporting_period': start_date.strftime('%m/%Y'), 'publish_status': 'unpublished', 'quarterly_submission': False, 'certified_submission': None, 'fabs_submission': True, 'fabs_meta': {'publish_date': None, 'published_file': None, 'total_rows': 0, 'valid_rows': 0} } results = get_submission_metadata(sub) assert results == expected_results
def test_get_submission_metadata_unpublished_fabs(database): """ Tests the get_submission_metadata function for unpublished fabs submissions """ sess = database.session now = datetime.datetime.utcnow() start_date = datetime.date(2000, 1, 1) cgac = CGACFactory(cgac_code='001', agency_name='CGAC Agency') frec_cgac = CGACFactory(cgac_code='999', agency_name='FREC CGAC') frec = FRECFactory(frec_code='0001', agency_name='FREC Agency', cgac=frec_cgac) sub = SubmissionFactory(submission_id=4, created_at=now, updated_at=now, cgac_code=cgac.cgac_code, reporting_fiscal_period=1, reporting_fiscal_year=2015, is_quarter_format=False, publish_status_id=PUBLISH_STATUS_DICT['unpublished'], d2_submission=True, reporting_start_date=start_date, number_of_errors=4, number_of_warnings=1) sess.add_all([cgac, frec_cgac, frec, sub]) sess.commit() expected_results = { 'cgac_code': cgac.cgac_code, 'frec_code': None, 'agency_name': cgac.agency_name, 'number_of_errors': 4, 'number_of_warnings': 1, 'number_of_rows': 0, 'total_size': 0, 'created_on': now.strftime('%m/%d/%Y'), 'last_updated': now.strftime("%Y-%m-%dT%H:%M:%S"), 'last_validated': '', 'reporting_period': start_date.strftime('%m/%Y'), 'publish_status': 'unpublished', 'quarterly_submission': False, 'fabs_submission': True, 'fabs_meta': {'publish_date': None, 'published_file': None, 'total_rows': 0, 'valid_rows': 0} } results = get_submission_metadata(sub) assert results == expected_results
def test_get_submission_metadata_monthly_dabs(database): """ Tests the get_submission_metadata function for monthly dabs submissions """ sess = database.session now = datetime.datetime.utcnow() now_plus_10 = now + datetime.timedelta(minutes=10) start_date = datetime.date(2000, 1, 1) cgac = CGACFactory(cgac_code='001', agency_name='CGAC Agency') sub = SubmissionFactory(submission_id=3, created_at=now, updated_at=now_plus_10, cgac_code=cgac.cgac_code, reporting_fiscal_period=4, reporting_fiscal_year=2016, is_quarter_format=False, publish_status_id=PUBLISH_STATUS_DICT['unpublished'], d2_submission=False, reporting_start_date=start_date, number_of_errors=20, number_of_warnings=0) sess.add_all([cgac, sub]) sess.commit() expected_results = { 'cgac_code': cgac.cgac_code, 'frec_code': None, 'agency_name': cgac.agency_name, 'number_of_errors': 20, 'number_of_warnings': 0, 'number_of_rows': 0, 'total_size': 0, 'created_on': now.strftime('%m/%d/%Y'), 'last_updated': now_plus_10.strftime("%Y-%m-%dT%H:%M:%S"), 'last_validated': '', 'reporting_period': start_date.strftime('%m/%Y'), 'publish_status': 'unpublished', 'quarterly_submission': False, 'certified_submission': None, 'fabs_submission': False, 'fabs_meta': None } results = get_submission_metadata(sub) assert results == expected_results
def test_get_submission_metadata_monthly_dabs(database): """ Tests the get_submission_metadata function for monthly dabs submissions """ sess = database.session now = datetime.datetime.utcnow() now_plus_10 = now + datetime.timedelta(minutes=10) start_date = datetime.date(2000, 1, 1) cgac = CGACFactory(cgac_code='001', agency_name='CGAC Agency') sub = SubmissionFactory(submission_id=3, created_at=now, updated_at=now_plus_10, cgac_code=cgac.cgac_code, reporting_fiscal_period=4, reporting_fiscal_year=2016, is_quarter_format=False, publish_status_id=PUBLISH_STATUS_DICT['unpublished'], d2_submission=False, reporting_start_date=start_date, number_of_errors=20, number_of_warnings=0) sess.add_all([cgac, sub]) sess.commit() expected_results = { 'cgac_code': cgac.cgac_code, 'frec_code': None, 'agency_name': cgac.agency_name, 'number_of_errors': 20, 'number_of_warnings': 0, 'number_of_rows': 0, 'total_size': 0, 'created_on': now.strftime('%m/%d/%Y'), 'last_updated': now_plus_10.strftime("%Y-%m-%dT%H:%M:%S"), 'last_validated': '', 'reporting_period': start_date.strftime('%m/%Y'), 'publish_status': 'unpublished', 'quarterly_submission': False, 'fabs_submission': False, 'fabs_meta': None } results = get_submission_metadata(sub) assert results == expected_results
def test_get_submission_metadata_quarterly_dabs_frec(database): """ Tests the get_submission_metadata function for quarterly dabs submissions frec """ sess = database.session now = datetime.datetime.utcnow() frec_cgac = CGACFactory(cgac_code='999', agency_name='FREC CGAC') frec = FRECFactory(frec_code='0001', agency_name='FREC Agency', cgac=frec_cgac) sub = SubmissionFactory(submission_id=2, created_at=now, updated_at=now, cgac_code=None, frec_code=frec.frec_code, reporting_fiscal_period=6, reporting_fiscal_year=2010, is_quarter_format=True, publish_status_id=PUBLISH_STATUS_DICT['published'], d2_submission=False, number_of_errors=0, number_of_warnings=0) sess.add_all([frec_cgac, frec, sub]) sess.commit() expected_results = { 'cgac_code': None, 'frec_code': frec.frec_code, 'agency_name': frec.agency_name, 'number_of_errors': 0, 'number_of_warnings': 0, 'number_of_rows': 0, 'total_size': 0, 'created_on': now.strftime('%m/%d/%Y'), 'last_updated': now.strftime("%Y-%m-%dT%H:%M:%S"), 'last_validated': '', 'reporting_period': 'Q2/2010', 'publish_status': 'published', 'quarterly_submission': True, 'certified_submission': None, 'fabs_submission': False, 'fabs_meta': None } results = get_submission_metadata(sub) assert results == expected_results
def test_get_submission_metadata_quarterly_dabs_frec(database): """ Tests the get_submission_metadata function for quarterly dabs submissions frec """ sess = database.session now = datetime.datetime.utcnow() frec_cgac = CGACFactory(cgac_code='999', agency_name='FREC CGAC') frec = FRECFactory(frec_code='0001', agency_name='FREC Agency', cgac=frec_cgac) sub = SubmissionFactory(submission_id=2, created_at=now, updated_at=now, cgac_code=None, frec_code=frec.frec_code, reporting_fiscal_period=6, reporting_fiscal_year=2010, is_quarter_format=True, publish_status_id=PUBLISH_STATUS_DICT['published'], d2_submission=False, number_of_errors=0, number_of_warnings=0) sess.add_all([frec_cgac, frec, sub]) sess.commit() expected_results = { 'cgac_code': None, 'frec_code': frec.frec_code, 'agency_name': frec.agency_name, 'number_of_errors': 0, 'number_of_warnings': 0, 'number_of_rows': 0, 'total_size': 0, 'created_on': now.strftime('%m/%d/%Y'), 'last_updated': now.strftime("%Y-%m-%dT%H:%M:%S"), 'last_validated': '', 'reporting_period': 'Q2/2010', 'publish_status': 'published', 'quarterly_submission': True, 'fabs_submission': False, 'fabs_meta': None } results = get_submission_metadata(sub) assert results == expected_results
def submission_metadata(submission): return JsonResponse.create(StatusCode.OK, get_submission_metadata(submission))