"""Test ows-payee models.""" from typing import Any from pydantic import ValidationError import pytest from src.models.ows_payee import ( KycNotificationCreateResponseModel, PayeeDataloaderResponseModel, ) def test_kyc_notification_create_response_model_success() -> None: """Test KycNotificationCreateResponseModel.""" data = { 'account_payee_kyc_notification_id': 100500, 'account_payee_id': 500, 'file_upload_link': 'link_to_file', 'requirement_id': 'req', 'requirement_type_id': 18, 'possible_sub_requirement_types': '88,105,abc', 'sub_requirement_status_id': 100, 'entity_reference_id': None, 'entity_reference_type_id': None, } assert dict( KycNotificationCreateResponseModel.model_validate( data | {'last_modified': None, 'last_modified_by': None} ) ) == data | {'sub_requirement_id': None} def test_kyc_notification_create_response_model_failure() -> None: """Test KycNotificationCreateResponseModel validation failure.""" with pytest.raises(ValidationError) as exc_info: KycNotificationCreateResponseModel.model_validate( { 'account_payee_id': 'abc', 'created_at': 123, 'requirement_type_id': 'aaa', 'entity_reference_id': 12, } ) assert [e['loc'] for e in exc_info.value.errors()] == [ ('account_payee_kyc_notification_id',), ('account_payee_id',), ('file_upload_link',), ('requirement_type_id',), ('entity_reference_id',), ] def test_payee_dataloader_response_model_success() -> None: """Test PayeeDataloaderResponseModel.""" data = { 'payees': [{'data': {'payee_id': 123}}], } assert PayeeDataloaderResponseModel.model_validate(data).model_dump() == data @pytest.mark.parametrize( 'data', ( None, {}, {'payees': []}, { 'payees': [{'payee_id': 123}, {'payee_id': 124}], }, ), ) def test_payee_dataloader_response_model_failure(data: dict[Any, Any]) -> None: with pytest.raises(ValidationError): PayeeDataloaderResponseModel.model_validate(data)