"""Functional tests for LedgerVatSummary.""" from ledger.models import LedgerVatSummary from tests.conftest import mock_account def test_bulk_create_ledger_vat_summary_success( fixture_client, mock_event_fixtures, mock_bulk_ledger_vat_summary_request_body ): """Test for bulk_create_ledger_vat_summary endpoint. POST: /ledger-vat-summary/statement-period/statement_period_id/event/event_id/bulk """ mock_account(2) event_id = 1 statement_period_id = 1 post_data = mock_bulk_ledger_vat_summary_request_body res = fixture_client.post( f'/ledger-vat-summary/statement-period/{statement_period_id}/event/{event_id}/bulk', json=post_data, ) assert res.status_code == 201 assert LedgerVatSummary.query.count() == len(post_data) def test_bulk_create_ledger_vat_summary_failure_validation(fixture_client): """Test for bulk_create_ledger_vat_summary endpoint failure validation. POST: /ledger-vat-summary/statement-period/statement_period_id/event/event_id/bulk """ event_id = 1 statement_period_id = 1 post_data = ( { 'account_id': 1, 'vat_category': 'closing_balance', 'payee_currency_code': 'USD', 'vat_currency_code': 'GBP', 'base_amount_payee_currency': '100.00', 'vat_rate': '20.00', 'vat_amount_payee_currency': '80.00', 'vat_amount_vat_currency': '63.71', 'net_amount_payee_currency': '180.00', 'abacus_exempt_reason': None, }, { 'contract_id': 2, 'vat_category': 'closing_balance', 'payee_currency_code': 'USD', 'vat_currency_code': 'GBP', 'base_amount_payee_currency': '1000.00', 'vat_rate': '50.00', 'vat_amount_payee_currency': '180.00', 'vat_amount_vat_currency': '133.71', 'net_amount_payee_currency': '2180.00', 'abacus_exempt_reason': None, }, ) res = fixture_client.post( f'/ledger-vat-summary/statement-period/{statement_period_id}/event/{event_id}/bulk', json=post_data, ) assert res.status_code == 400 assert res.json == { 'code': 'error', 'message': { '0': {'contract_id': ['Must be specified.']}, '1': {'account_id': ['Must be specified.']}, }, } assert LedgerVatSummary.query.count() == 0