"""Integration tests suite.""" import operator from decimal import Decimal import pytest from tests.integration.conftest import ( check_db_empty, create_ledger_correction_fixture, ows_abacus_worksheet_api_client, ) @pytest.mark.jira('ACC-5703') def test_get_hello(basic_headers): """Get Hello Endpoint.""" ows_abacus_worksheet_client = ows_abacus_worksheet_api_client(basic_headers) response = ows_abacus_worksheet_client.get_hello() assert response.status_code == 200, 'Reason: {}\nURL: {}'.format( response.reason, response.url ) response_body = response.json() assert 'status' in response_body assert 'ok' in response_body['status'] @pytest.mark.jira('ACC-5697') def test_post_corrections_bulk( basic_headers, create_account_fixture, create_statement_period_fixture ): """POST /worksheet-correction/bulk .""" ows_abacus_worksheet_client = ows_abacus_worksheet_api_client(basic_headers) body = [ { 'account_id': 1, 'correction_statement_period_id': 1, 'correction_type': 'royalty_correction', 'currency_code': 'USD', 'gross_revenue': Decimal('200.002000000000000000'), 'distribution_fee': Decimal('0.000000000000000000'), 'net_revenue': Decimal('200.002000000000000000'), 'statement_period_id': 1, } ] res_post = ows_abacus_worksheet_client.post_corrections_bulk(body) assert res_post.status_code == 201 assert len(res_post.json()) == 1 assert res_post.json()[0]['account_id'] == body[0]['account_id'] assert ( res_post.json()[0]['correction_statement_period_id'] == body[0]['correction_statement_period_id'] ) assert res_post.json()[0]['correction_type'] == body[0]['correction_type'] assert res_post.json()[0]['currency_code'] == body[0]['currency_code'] assert res_post.json()[0]['statement_period_id'] == body[0]['statement_period_id'] assert res_post.json()[0]['gross_revenue'] == str(body[0]['gross_revenue']) assert ( res_post.json()[0]['distribution_fee'] == '%.18f' % body[0]['distribution_fee'] ) assert res_post.json()[0]['net_revenue'] == str(body[0]['gross_revenue']) @pytest.mark.jira('ACC-5699') def test_get_unapplied_corrections( basic_headers, create_account_fixture, create_contract_fixture, create_account_contract_fixture, create_abacus_event_fixture, create_statement_period_fixture, ): """GET /worksheet-correction/statement-period/{period_id}/{cor_type}/unapplied .""" ows_abacus_worksheet_client = ows_abacus_worksheet_api_client(basic_headers) body = [ { 'account_id': 1, 'correction_statement_period_id': 1, 'correction_type': 'royalty_correction', 'currency_code': 'USD', 'gross_revenue': Decimal('200.002000000000000000'), 'distribution_fee': Decimal('0.000000000000000000'), 'net_revenue': Decimal('200.002000000000000000'), 'statement_period_id': 1, } ] res_post = ows_abacus_worksheet_client.post_corrections_bulk(body) assert res_post.status_code == 201 res_get = ows_abacus_worksheet_client.get_unapplied_corrections( 1, 'royalty_correction' ) assert res_get.status_code == 200 response_item = res_get.json()['items'][0] assert response_item['account_id'] == body[0]['account_id'] assert response_item['correction_type'] == body[0]['correction_type'] assert ( response_item['correction_statement_period_id'] == body[0]['correction_statement_period_id'] ) assert response_item['currency_code'] == body[0]['currency_code'] assert response_item['statement_period_id'] == body[0]['statement_period_id'] assert res_post.json()[0]['gross_revenue'] == str(body[0]['gross_revenue']) assert ( res_post.json()[0]['distribution_fee'] == '%.18f' % body[0]['distribution_fee'] ) assert res_post.json()[0]['net_revenue'] == str(body[0]['gross_revenue']) # if there's an entry in ledger_correction table - item should not be returned create_ledger_correction_fixture() res_get = ows_abacus_worksheet_client.get_unapplied_corrections( 1, 'royalty_correction' ) assert res_get.status_code == 200 assert len(res_get.json()['items']) == 0 assert res_get.json()['total_count'] == 0 @pytest.mark.jira('ACC-6310') def test_get_worksheet_adjustments( basic_headers, create_account_fixture, create_contract_fixture, create_account_contract_fixture, create_abacus_event_fixture, create_statement_period_fixture, create_statement_period_adjustment_file_fixture, create_worksheet_adjustment_fixture, ): """GET /worksheet-adjustments/statement-period-adjustment-file// .""" ows_abacus_worksheet_client = ows_abacus_worksheet_api_client(basic_headers) file_id = 1 res_get = ows_abacus_worksheet_client.get_worksheet_adjustment(file_id) assert res_get.status_code == 200 assert len(res_get.json()['items']) > 0 # defined in fixtures expected_response = { 'worksheet_adjustment_id': 1, 'statement_period_adjustment_file_id': 1, 'abacus_event_id': 1, 'account_id': 1, 'contract_id': 1, 'activity_statement_period_id': 1, 'apply_to_statement_period_id': 1, 'reference_adjustment_type_id': 1, 'apply_to_flowthrough_payment': None, 'adjustment_amount': '4.00', 'adjustment_currency_code': 'USD', 'note': None, 'internal_note': None, 'account_currency_code': None, 'account_payment_entity_id': None, 'details': [], } assert res_get.json()['items'][0] == expected_response @pytest.mark.jira('ACC-6311') def test_get_worksheet_adjustment_details( basic_headers, create_account_fixture, create_contract_fixture, create_account_contract_fixture, create_abacus_event_fixture, create_statement_period_fixture, create_statement_period_adjustment_file_fixture, create_worksheet_adjustment_fixture, create_worksheet_adjustment_detail_fixture, ): """GET /worksheet-adjustment/{worksheet_adjustment_id}/details .""" ows_abacus_worksheet_client = ows_abacus_worksheet_api_client(basic_headers) res_get = ows_abacus_worksheet_client.get_worksheet_adjustment_details(1) assert res_get.status_code == 200 assert len(res_get.json()['items']) > 0 assert res_get.json()['items'][0]['note'] == 'e2e_test' @pytest.mark.jira('ACC-6308') @pytest.mark.skip( reason="This endpoint is outdated and we're using lambda instead. Candidate for deletion." ) def test_post_worksheet_adjustments_import( drop_fks, basic_headers, create_account_fixture, create_contract_fixture, create_account_contract_fixture, create_abacus_event_fixture, create_statement_period_fixture, create_statement_period_adjustment_file_fixture, ): """POST /worksheet-adjustments/import .""" check_db_empty(operator.le, table='worksheet_adjustment') ows_abacus_worksheet_client = ows_abacus_worksheet_api_client(basic_headers) post_body = {'abacus_event_id': 1, 'statement_period_adjustment_file_id': 1} res_post = ows_abacus_worksheet_client.post_worksheet_adjustments_import(post_body) assert res_post.status_code == 201 check_db_empty(operator.gt, table='worksheet_adjustment') @pytest.mark.jira('ACC-6644') def test_delete_worksheet_adjustments_and_details( basic_headers, create_account_fixture, create_contract_fixture, create_account_contract_fixture, create_abacus_event_fixture, create_statement_period_fixture, create_statement_period_adjustment_file_fixture, create_worksheet_adjustment_fixture, create_worksheet_adjustment_detail_fixture, ): """DELETE /worksheet-adjustments/statement-period-adjustment-file/ .""" ows_abacus_worksheet_client = ows_abacus_worksheet_api_client(basic_headers) file_id = 2 res_get = ows_abacus_worksheet_client.get_worksheet_adjustment(file_id) assert res_get.status_code == 200 assert len(res_get.json()['items']) > 0 res_get = ows_abacus_worksheet_client.get_worksheet_adjustment_details(file_id) assert res_get.status_code == 200 assert len(res_get.json()['items']) > 0 assert res_get.json()['items'][0]['note'] == 'e2e_test' res_delete = ows_abacus_worksheet_client.del_adjs_and_details_by_period_adj_file_id( file_id ) assert res_delete.status_code == 204 res_get = ows_abacus_worksheet_client.get_worksheet_adjustment(file_id) assert res_get.status_code == 200 assert len(res_get.json()['items']) == 0 res_get = ows_abacus_worksheet_client.get_worksheet_adjustment_details(file_id) assert res_get.status_code == 200 assert len(res_get.json()['items']) == 0 @pytest.mark.jira('ACC-6699') def test_get_worksheet_adjustments_and_details( basic_headers, create_account_fixture, create_contract_fixture, create_account_contract_fixture, create_abacus_event_fixture, create_statement_period_fixture, create_statement_period_adjustment_file_fixture, create_worksheet_adjustment_fixture, create_worksheet_adjustment_detail_fixture, ): """GET .../adjustments-and-details .""" ows_abacus_worksheet_client = ows_abacus_worksheet_api_client(basic_headers) file_id = 1 res_get = ows_abacus_worksheet_client.get_adjustment_and_details_by_file_id(file_id) assert res_get.status_code == 200 assert len(res_get.json()['items']) == 2 assert res_get.json()['items'][0]['note'] == 'e2e_test' @pytest.mark.jira('TAP-1065') def test_get_pending_worksheet_adjustments( drop_fks, basic_headers, create_account_fixture, create_contract_fixture, create_account_contract_fixture, create_abacus_event_fixture, create_statement_period_fixture, create_statement_period_adjustment_file_fixture, create_worksheet_adjustment_fixture, create_worksheet_adjustment_detail_fixture, create_account_payment_term_fixture, ): """GET /worksheet-adjustments/pending .""" ows_abacus_worksheet_client = ows_abacus_worksheet_api_client(basic_headers) params = {'statement_period_id': 1, 'reference_payment_entity_id': 1} res_get = ows_abacus_worksheet_client.get_pending_worksheet_adjustments(params) assert res_get.status_code == 200 resp_items = res_get.json()['items'] assert len(resp_items) == 2 for i in resp_items: assert i['note'] == 'e2e_test' assert i['internal_note'] == 'e2e_test' assert i['adjustment_currency_code'] == 'USD' @pytest.mark.jira('ACC-8176') def test_get_worksheet_adjustments_contracts_accounts_by_file_id( drop_fks, basic_headers, create_account_fixture, create_contract_fixture, create_account_contract_fixture, create_abacus_event_fixture, create_statement_period_fixture, create_statement_period_adjustment_file_fixture, create_worksheet_adjustment_fixture, create_worksheet_adjustment_detail_fixture, create_account_payment_term_fixture, ): """GET /worksheet-adjustments/statement-period-adjustment-file//contracts .""" ows_abacus_worksheet_client = ows_abacus_worksheet_api_client(basic_headers) params = {'contract_search_term': 'test'} res_get = ( ows_abacus_worksheet_client.get_worksheet_adjustments_contracts_by_file_id(1) ) assert res_get.status_code == 200 assert res_get.json()['total_count'] == 2 assert len(res_get.json()['items']) == 2 res_get = ( ows_abacus_worksheet_client.get_worksheet_adjustments_contracts_by_file_id( 1, params ) ) assert res_get.status_code == 200 assert res_get.json()['total_count'] == 1 assert len(res_get.json()['items']) == 1 params = {'account_search_term': 'test'} res_get = ows_abacus_worksheet_client.get_worksheet_adjustments_accounts_by_file_id( 1 ) assert res_get.status_code == 200 assert res_get.json()['total_count'] == 2 assert len(res_get.json()['items']) == 2 res_get = ows_abacus_worksheet_client.get_worksheet_adjustments_accounts_by_file_id( 1, params ) assert res_get.status_code == 200 assert res_get.json()['total_count'] == 1 assert len(res_get.json()['items']) == 1