"""Tests for ReserveScheduleProcessor.""" from unittest.mock import patch from reserves_schedule.processor import ReservesScheduleProcessor @patch('reserves_schedule.processor.get_contract_reserves_by_ids') @patch('reserves_schedule.processor.bulk_create_ledger_release_schedule') @patch('reserves_schedule.processor.make_request_in_batches') @patch('reserves_schedule.processor.get_reserve_taken_entries_by_accounting_run') def test_process_by_accounting_run( mock_ows_get_reserves, make_request_in_batches_mock, bulk_create_ledger_release_schedule_mock, get_contract_reserves_mock, mock_ledger_reserve_taken_entries, mock_contract_reserves_response, mock_accounting_run_event ): """Test for ReserveScheduleProcessor.process method.""" get_contract_reserves_mock.return_value = mock_contract_reserves_response make_request_in_batches_mock.return_value = [ mock_ledger_reserve_taken_entries['items'] ] processor = ReservesScheduleProcessor(event=mock_accounting_run_event) processor.process() make_request_in_batches_mock.assert_called_once_with( mock_ows_get_reserves, accounting_run_id=311) get_contract_reserves_mock.assert_called() bulk_create_ledger_release_schedule_mock.assert_called_once_with( [ { 'abacus_event_id': 1, 'account_id': 1, 'taken_statement_period_id': 1, 'release_statement_period_id': 11, 'ledger_reserve_taken_id': 1, 'currency_code': 'USD', 'installment_amount': '-4.01', 'outstanding_amount_after_installment': '-55.99' }, { 'abacus_event_id': 1, 'account_id': 1, 'taken_statement_period_id': 1, 'release_statement_period_id': 12, 'ledger_reserve_taken_id': 1, 'currency_code': 'USD', 'installment_amount': '-4.01', 'outstanding_amount_after_installment': '-51.98' }, { 'abacus_event_id': 1, 'account_id': 1, 'taken_statement_period_id': 1, 'release_statement_period_id': 13, 'ledger_reserve_taken_id': 1, 'currency_code': 'USD', 'installment_amount': '-4.01', 'outstanding_amount_after_installment': '-47.97' }, { 'abacus_event_id': 1, 'account_id': 1, 'taken_statement_period_id': 1, 'release_statement_period_id': 14, 'ledger_reserve_taken_id': 1, 'currency_code': 'USD', 'installment_amount': '-4.01', 'outstanding_amount_after_installment': '-43.96' }, { 'abacus_event_id': 1, 'account_id': 1, 'taken_statement_period_id': 1, 'release_statement_period_id': 15, 'ledger_reserve_taken_id': 1, 'currency_code': 'USD', 'installment_amount': '-4.01', 'outstanding_amount_after_installment': '-39.95' }, { 'abacus_event_id': 1, 'account_id': 1, 'taken_statement_period_id': 1, 'release_statement_period_id': 16, 'ledger_reserve_taken_id': 1, 'currency_code': 'USD', 'installment_amount': '-4.01', 'outstanding_amount_after_installment': '-35.94' }, { 'abacus_event_id': 1, 'account_id': 1, 'taken_statement_period_id': 1, 'release_statement_period_id': 17, 'ledger_reserve_taken_id': 1, 'currency_code': 'USD', 'installment_amount': '-4.01', 'outstanding_amount_after_installment': '-31.93' }, { 'abacus_event_id': 1, 'account_id': 1, 'taken_statement_period_id': 1, 'release_statement_period_id': 18, 'ledger_reserve_taken_id': 1, 'currency_code': 'USD', 'installment_amount': '-4.01', 'outstanding_amount_after_installment': '-27.92' }, { 'abacus_event_id': 1, 'account_id': 1, 'taken_statement_period_id': 1, 'release_statement_period_id': 19, 'ledger_reserve_taken_id': 1, 'currency_code': 'USD', 'installment_amount': '-4.01', 'outstanding_amount_after_installment': '-23.91' }, { 'abacus_event_id': 1, 'account_id': 1, 'taken_statement_period_id': 1, 'release_statement_period_id': 20, 'ledger_reserve_taken_id': 1, 'currency_code': 'USD', 'installment_amount': '-4.01', 'outstanding_amount_after_installment': '-19.90' }, { 'abacus_event_id': 1, 'account_id': 1, 'taken_statement_period_id': 1, 'release_statement_period_id': 21, 'ledger_reserve_taken_id': 1, 'currency_code': 'USD', 'installment_amount': '-4.01', 'outstanding_amount_after_installment': '-15.89' }, { 'abacus_event_id': 1, 'account_id': 1, 'taken_statement_period_id': 1, 'release_statement_period_id': 22, 'ledger_reserve_taken_id': 1, 'currency_code': 'USD', 'installment_amount': '-4.01', 'outstanding_amount_after_installment': '-11.88' }, { 'abacus_event_id': 1, 'account_id': 1, 'taken_statement_period_id': 1, 'release_statement_period_id': 23, 'ledger_reserve_taken_id': 1, 'currency_code': 'USD', 'installment_amount': '-4.01', 'outstanding_amount_after_installment': '-7.87' }, { 'abacus_event_id': 1, 'account_id': 1, 'taken_statement_period_id': 1, 'release_statement_period_id': 24, 'ledger_reserve_taken_id': 1, 'currency_code': 'USD', 'installment_amount': '-4.01', 'outstanding_amount_after_installment': '-3.86' }, { 'abacus_event_id': 1, 'account_id': 1, 'taken_statement_period_id': 1, 'release_statement_period_id': 25, 'ledger_reserve_taken_id': 1, 'currency_code': 'USD', 'installment_amount': '-3.86', 'outstanding_amount_after_installment': '0.00' } ] ) @patch('reserves_schedule.processor.get_contract_reserves_by_ids') @patch('reserves_schedule.processor.bulk_create_ledger_release_schedule') @patch('reserves_schedule.processor.make_request_in_batches') @patch('reserves_schedule.processor.get_reserve_taken_entries_by_accounting_run') def test_process_no_reserve_taken_by_accounting_run( mock_ows_get_reserves, make_request_in_batches_mock, bulk_create_ledger_release_schedule_mock, get_contract_reserves_mock, mock_accounting_run_event ): """Test for process method if there are no reserves taken entries.""" make_request_in_batches_mock.return_value = [] processor = ReservesScheduleProcessor(event=mock_accounting_run_event) processor.process() make_request_in_batches_mock.assert_called_once_with( mock_ows_get_reserves, accounting_run_id=311) get_contract_reserves_mock.assert_not_called() bulk_create_ledger_release_schedule_mock.assert_not_called()