"""Unit tests for reference_payment_entity logic.""" from unittest.mock import patch from abacus_contract.logic import reference_payment_entity as logic @patch('abacus_contract.logic.reference_payment_entity.ReferencePaymentEntitySchema') @patch('abacus_contract.logic.reference_payment_entity.prepare_dataload_response') @patch('abacus_contract.logic.reference_payment_entity.models') def test_get_payment_entities_by_ids(mock_models, mock_prepare, mock_schema): """Fetches by deduped ids and shapes the ordered dataload response.""" items = [object()] dumped = [{'reference_payment_entity_id': 1}] formatted = [{'data': dumped[0]}, {'data': None}] mock_models.ReferencePaymentEntity.get_by_ids.return_value = items mock_schema.return_value.dump.return_value = dumped mock_prepare.return_value = formatted result = logic.get_payment_entities_by_ids([1, 2, 1]) assert result.status == 200 assert result.message == formatted # Deduped, order-preserving. mock_models.ReferencePaymentEntity.get_by_ids.assert_called_once_with([1, 2]) mock_prepare.assert_called_once_with([1, 2], dumped, 'reference_payment_entity_id')