"""Ledger Correction logic tests.""" from unittest.mock import call, patch import pytest from sqlalchemy import exc from ledger.constants import error from ledger.logic import ledger_vat_summary as logic from ledger.logic.exceptions import LogicError @patch('ledger.logic.ledger_vat_summary.db') @patch('ledger.logic.ledger_vat_summary.LedgerVatSummary') def test_create_bulk( mock_model, mock_db, mock_event_fixtures, mock_bulk_ledger_vat_summary_request_body ): """Test bulk_create function.""" event_id = 101 statement_period_id = 1102 post_data = mock_bulk_ledger_vat_summary_request_body res = logic.bulk_create(event_id, statement_period_id, post_data) assert mock_model.call_args_list == [ call( **{ **post_data[0], 'abacus_event_id': event_id, 'statement_period_id': statement_period_id, 'activity_statement_period_id': statement_period_id, } ), call( **{ **post_data[1], 'abacus_event_id': event_id, 'statement_period_id': statement_period_id, } ), ] mock_db.session.bulk_save_objects.assert_called_once() mock_db.session.commit.assert_called_once() assert res.status == 201 assert res.message == 'ok' @patch('ledger.logic.ledger_vat_summary.db') def test_bulk_create_failure( mock_db, mock_event_fixtures, mock_bulk_ledger_vat_summary_request_body ): """Test bulk_create_method failure.""" event_id = 101 statement_period_id = 1102 post_data = mock_bulk_ledger_vat_summary_request_body mock_db.session.commit.side_effect = exc.IntegrityError(None, None, None) with pytest.raises(LogicError, match=error.ERROR_INTEGRITY): logic.bulk_create(event_id, statement_period_id, post_data) assert mock_db.session.commit.called assert mock_db.session.rollback.called