"""Tests for ledger_contract_advance_applied handlers.""" from unittest.mock import patch from tests.utils.factories import CombinedAdvancesFactory @patch('moneyhub.handlers.ledger_contract_advance_applied.logic') def test_get_by_account_and_statement_period( mock_logic, fixture_client ): """Test to get advances per statement period for a specified account.""" account_id = 1 contract_id = 123 statement_period_id = 285 response = [ CombinedAdvancesFactory.build( unique_key='14', account_id=33089, contract_id=590849, statement_period_id=286, advance_amount=-1000.00, advance_currency_code='AUD', advance_amount_payee_currency=-1000.00, advance_payee_currency_code='AUD', advance_description='A little pocket money for your troubles', ), ] expected_response = [{ 'advance_id': '14', 'account_id': 33089, 'contract_id': 590849, 'statement_period_id': 286, 'advance_amount': -1000.00, 'advance_currency_code': 'AUD', 'advance_amount_payee_currency': -1000.00, 'advance_payee_currency_code': 'AUD', 'advance_description': 'A little pocket money for your troubles' }] mock_logic.get_by_account_and_statement_periods.return_value = response res = fixture_client.get( f'/applied-advances/account/{account_id}/statement-period/{statement_period_id}?contract_id={contract_id}') # noqa: E501 assert res.status_code == 200 assert res.json() == expected_response mock_logic.get_by_account_and_statement_periods.assert_called_once_with( account_id, [statement_period_id], contract_id)