"""Unit tests for LedgerAccountProcessor .""" from unittest.mock import MagicMock from reserves_release.config import LEDGER_TYPES from reserves_release.ledger_account_processor import LedgerAccountProcessor from reserves_release.ledger_entry_queue import LedgerEntryQueue def test_format_ledger_account_entry(mock_event): """Test formatting ledger_account params.""" mock_post_function = MagicMock() entry_queue = LedgerEntryQueue(mock_post_function) contract_id = 1 mock_ledger_params = { 'currency_code': 'USD', 'account_id': 1, 'account_ledger_amount': '78.89' } processor = LedgerAccountProcessor(contract_id, mock_event, entry_queue) res = processor._format_ledger_account_entry(mock_ledger_params) assert res == { 'abacus_event_id': mock_event['abacus_event_id'], 'account_id': mock_ledger_params['account_id'], 'contract_id': contract_id, 'currency_amount': mock_ledger_params['account_ledger_amount'], 'currency_code': mock_ledger_params['currency_code'], 'model_type': LEDGER_TYPES.ACCOUNT } def test_process_ledger_account( mock_event, mock_ledger_reserve_release_schedule ): """Test ledger_account processor's main process method that queues entries.""" # noqa: E501 contract_id = 1 mock_post_function = MagicMock() entry_queue = LedgerEntryQueue(mock_post_function) mock_release_schedule = mock_ledger_reserve_release_schedule processor = LedgerAccountProcessor(contract_id, mock_event, entry_queue) processor.process(mock_release_schedule) assert processor._entry_queue.length == 1 assert processor._entry_queue._entries == [{ 'abacus_event_id': 1, 'account_id': 1, 'contract_id': 1, 'currency_amount': '2611.33', 'currency_code': 'USD', 'model_type': LEDGER_TYPES.ACCOUNT }] def test_process_ledger_account_when_zero( mock_event, mock_ledger_reserve_release_schedule ): """Test ledger_account processor's main process method when total amount is zero.""" contract_id = 1 mock_post_function = MagicMock() entry_queue = LedgerEntryQueue(mock_post_function) mock_release_schedule = mock_ledger_reserve_release_schedule mock_release_schedule[1]['installment_amount'] = \ mock_release_schedule[0]['installment_amount'][1:] # remove negative sign processor = LedgerAccountProcessor(contract_id, mock_event, entry_queue) processor.process(mock_release_schedule) assert processor._entry_queue.length == 0