"""Functional tests for accounting period report endpoints.""" from moto import mock_aws from royalties.constants.constants import REPORT_TYPE from royalties.constants.error import INVALID_REPORT_TYPE from royalties.tests.utils.factories import ( AccountingPeriodFactory, AccountingPeriodReportFactory, ) def test_get_acc_period_reports_by_acc_period_id(fixture_client): """GET /accounting-period//accounting-period-reports.""" accounting_period = AccountingPeriodFactory.create() accounting_period_report = AccountingPeriodReportFactory.create( accounting_period=accounting_period ) accounting_period_id = accounting_period.accounting_period_id result = fixture_client.get( f'/accounting-period/{accounting_period_id}/accounting-period-reports' ) assert result.status_code == 200 assert result.json[0] == { 'accounting_period_report_id': accounting_period_report.accounting_period_report_id, 'accounting_period_id': accounting_period_report.accounting_period_id, 'report_type': accounting_period_report.report_type, 'report_export_url': accounting_period_report.report_export_url, } @mock_aws def test_get_acc_period_report(fixture_client): """GET /accounting-period//report-type//accounting-period-report.""" accounting_period = AccountingPeriodFactory.create() report_1 = AccountingPeriodReportFactory.create( accounting_period=accounting_period, report_export_url='s3://main/report_file_1/', report_type=REPORT_TYPE.VAT_EXEMPT, ) AccountingPeriodReportFactory.create( accounting_period=accounting_period, report_export_url='s3://main/report_file_2/', report_type=REPORT_TYPE.VAT_APPLIED_GBR, ) accounting_period_id = accounting_period.accounting_period_id report_type = REPORT_TYPE.VAT_EXEMPT result = fixture_client.get( f'/accounting-period/{accounting_period_id}/report-type/{report_type}/accounting-period-report' ) assert result.status_code == 200 assert result.json == { 'accounting_period_report_id': report_1.accounting_period_report_id, 'accounting_period_id': report_1.accounting_period_id, 'report_type': report_1.report_type, 'report_export_url': report_1.report_export_url, } def test_get_acc_period_reports_invalid_report_type(fixture_client): """GET /accounting-period//report-type//accounting-period-reports.""" accounting_period = AccountingPeriodFactory.create() accounting_period_id = accounting_period.accounting_period_id result = fixture_client.get( f'/accounting-period/{accounting_period_id}/report-type/test/accounting-period-report' ) assert result.status_code == 400 assert result.json['message'] == INVALID_REPORT_TYPE.format( report_type=', '.join([*REPORT_TYPE]) ) def test_create_or_update_accounting_period_report_update(fixture_client): """TEST accounting-period-report updating on POST request.""" accounting_period = AccountingPeriodFactory.create() accounting_period_report = AccountingPeriodReportFactory.create( accounting_period=accounting_period ) old_report_url = accounting_period_report.report_export_url period_id = accounting_period.accounting_period_id new_export_url = 's3://awesome/vat/report' post_body = { 'report_type': accounting_period_report.report_type, 'report_export_url': new_export_url, } result = fixture_client.post( f'/accounting-period/{period_id}/accounting-period-report/', json=post_body ) assert result.status_code == 201 assert result.json == { 'report_export_url': 's3://awesome/vat/report', 'report_type': 'vat_exempt', 'accounting_period_report_id': 1, 'accounting_period_id': 1, } assert ( result.json['accounting_period_report_id'] == accounting_period_report.accounting_period_report_id ) assert result.json['report_export_url'] != old_report_url def test_create_or_update_accounting_period_report_create(fixture_client): """TEST accounting-period-report creating on POST request.""" accounting_period = AccountingPeriodFactory.create() period_id = accounting_period.accounting_period_id new_export_url = 's3://awesome/vat/report' post_body = {'report_type': 'vat_applied_gbr', 'report_export_url': new_export_url} result = fixture_client.post( f'/accounting-period/{period_id}/accounting-period-report/', json=post_body ) assert result.status_code == 201 assert result.json == { 'report_export_url': 's3://awesome/vat/report', 'report_type': 'vat_applied_gbr', 'accounting_period_report_id': 1, 'accounting_period_id': 1, }