"""Unit tests for Ledger Reserve Release logic.""" from unittest.mock import patch from ledger.logic import ledger_reserve_release as logic from tests.utils.factories import ( LedgerReserveReleaseFactory, LedgerReserveReleaseScheduleFactory, ) @patch('ledger.logic.ledger_reserve_release.LedgerReserveRelease') @patch('ledger.logic.ledger_reserve_release.LedgerReserveReleaseSchedule') def test_bulk_create_ledger_reserve_release( mock_schedule_model, mock_release_model, mock_event_fixtures, mock_bulk_ledger_reserve_release_body, ): """Test bulk_create function.""" params = mock_bulk_ledger_reserve_release_body schedule = LedgerReserveReleaseScheduleFactory.create(abacus_event_id=11) mock_schedule_model.get_by_id.return_value = schedule mock_release_model.build.return_value = True mock_release_model.commit_changes.return_value = True result = logic.bulk_create(params) assert result.status == 201 assert len(result.message) == len(params) assert mock_release_model.build.call_count == len(params) mock_release_model.commit_changes.assert_called_once() @patch('ledger.logic.ledger_reserve_release.LedgerReserveRelease') @patch('ledger.logic.ledger_reserve_release.LedgerReserveReleaseSchedule') def test_bulk_create_ledger_reserve_release_already_released( mock_schedule_model, mock_release_model, mock_event_fixtures, mock_bulk_ledger_reserve_release_body, ): """Test bulk create when a reserve has already been released.""" params = mock_bulk_ledger_reserve_release_body schedules = LedgerReserveReleaseScheduleFactory.create_batch(2) LedgerReserveReleaseFactory.create( abacus_event_id=3, ledger_reserve_release_schedule=schedules[0] ) params[0]['ledger_reserve_release_schedule_id'] = schedules[ 0 ].ledger_reserve_release_schedule_id params[1]['ledger_reserve_release_schedule_id'] = schedules[ 1 ].ledger_reserve_release_schedule_id mock_schedule_model.get_by_id.side_effect = [*schedules] mock_release_model.build.return_value = True mock_release_model.commit_changes.return_value = True result = logic.bulk_create(params) assert result.status == 201 assert len(result.message) == 1 assert len(params) == 2 mock_release_model.build.assert_called_once_with(**params[1]) mock_release_model.commit_changes.assert_called_once()