"""Ledger reserve release schedule logic tests.""" from decimal import Decimal from unittest.mock import patch from moneyhub.logic import ledger_reserve_release_schedule as logic @patch('moneyhub.logic.ledger_reserve_release_schedule.models') def test_get_reserve_release_schedules(mock_models): """Test get_reserve_release_schedules method.""" schedule_items = [ { 'ledger_reserve_release_schedule_id': 1, 'abacus_event_id': 978, 'account_id': 35968, 'taken_statement_period_id': 283, 'release_statement_period_id': 284, 'ledger_reserve_taken_id': 1, 'currency_code': 'AUD', 'installment_amount': Decimal('-185.73'), 'outstanding_amount_after_installment': Decimal('-928.61'), 'contract_id': 500005, 'release_statement_period_name': 'August 2022', 'taken_statement_period_name': 'July 2022', 'taken_amount': Decimal('-185.73'), 'released_amount': Decimal('0') }, { 'ledger_reserve_release_schedule_id': 2, 'abacus_event_id': 978, 'account_id': 35968, 'taken_statement_period_id': 283, 'release_statement_period_id': 285, 'ledger_reserve_taken_id': 1, 'currency_code': 'AUD', 'installment_amount': Decimal('-185.73'), 'outstanding_amount_after_installment': Decimal('-742.88'), 'contract_id': 500005, 'release_statement_period_name': 'September 2022', 'taken_statement_period_name': 'July 2022', 'taken_amount': Decimal('-185.73'), 'released_amount': Decimal('185.73') }, { 'ledger_reserve_release_schedule_id': 3, 'abacus_event_id': 979, 'account_id': 35968, 'taken_statement_period_id': 284, 'release_statement_period_id': 286, 'ledger_reserve_taken_id': 2, 'currency_code': 'GBP', 'installment_amount': Decimal('-183.73'), 'outstanding_amount_after_installment': Decimal('-992.88'), 'contract_id': 500005, 'release_statement_period_name': 'October 2022', 'taken_statement_period_name': 'August 2022', 'taken_amount': Decimal('-183.73'), 'released_amount': Decimal('0') } ] expected_response = [ { 'ledger_reserve_release_schedule_id': 3, 'abacus_event_id': 979, 'account_id': 35968, 'taken_statement_period_id': 284, 'release_statement_period_id': 286, 'ledger_reserve_taken_id': 2, 'currency_code': 'GBP', 'installment_amount': Decimal('-183.73'), 'outstanding_amount_after_installment': Decimal('-992.88'), 'contract_id': 500005, 'release_statement_period_name': 'October 2022', 'taken_statement_period_name': 'August 2022', 'reserve_total': Decimal('183.73'), 'prior_period_reserve_total': Decimal('0'), 'current_period_reserve_total': Decimal('0'), 'reserves_remaining': Decimal('183.73'), 'released_amount': Decimal('0'), 'taken_amount': Decimal('-183.73'), 'liquidation_start_period_id': 286, 'liquidation_start_period_name': 'October 2022', 'liquidation_end_period_id': 286, 'liquidation_end_period_name': 'October 2022' }, { 'ledger_reserve_release_schedule_id': 1, 'abacus_event_id': 978, 'account_id': 35968, 'taken_statement_period_id': 283, 'release_statement_period_id': 284, 'ledger_reserve_taken_id': 1, 'currency_code': 'AUD', 'installment_amount': Decimal('-185.73'), 'outstanding_amount_after_installment': Decimal('-928.61'), 'contract_id': 500005, 'release_statement_period_name': 'August 2022', 'taken_statement_period_name': 'July 2022', 'reserve_total': Decimal('185.73'), 'prior_period_reserve_total': Decimal('0'), 'current_period_reserve_total': Decimal('0'), 'reserves_remaining': Decimal('185.73'), 'released_amount': Decimal('0'), 'taken_amount': Decimal('-185.73'), 'liquidation_start_period_id': 284, 'liquidation_start_period_name': 'August 2022', 'liquidation_end_period_id': 285, 'liquidation_end_period_name': 'September 2022' } ] mock_models.LedgerReserveReleaseSchedule.\ get_by_account_id_for_statement_period.return_value = \ schedule_items res = logic.get_reserve_release_schedules(35968, 284) assert res == expected_response mock_models.LedgerReserveReleaseSchedule.get_by_account_id_for_statement_period.\ assert_called_once_with(35968, 284)