"""TaxDetailsDocument model tests.""" from unittest.mock import patch from payee.logic.secure_document import ( create_secure_document_details, has_secure_document_details, ) from payee.models.tax_details import TaxDetailsDocument from tests.constants import MOCK_AUDIT_FIELDS @patch('payee.logic.secure_document.get_audit_fields') def test_tax_details_document_roundtrip(mock_get_audit_fields, mock_config): """Test tax details document create and retrieve.""" account_payee_id = '1' mock_get_audit_fields.return_value = MOCK_AUDIT_FIELDS create_params = { 'account_payee_id': account_payee_id, 'vat_number': 'VAT123456789', 'country_of_tax_residency_code': 'GB', 'local_tax_id': 'LOCAL123', 'business_name': 'Test Business Ltd', 'business_number': 'BN123456', 'address_1': '123 Test Street', 'city': 'London', 'country_code': 'GB', } create_secure_document_details( mock_config.SDM_CONFIG, TaxDetailsDocument, **create_params ) result = has_secure_document_details(account_payee_id, TaxDetailsDocument) response = TaxDetailsDocument.build_response(account_payee_id, result) assert response is not None assert response['account_payee_id'] == account_payee_id assert response['vat_number'] == 'VAT123456789' assert response['country_of_tax_residency_code'] == 'GB' assert response['local_tax_id'] == 'LOCAL123' assert response['business_name'] == 'Test Business Ltd' assert response['business_number'] == 'BN123456' assert response['revision'] == '0' assert ( response['modified_by_profile_type'] == MOCK_AUDIT_FIELDS['modified_by_profile_type'] ) assert ( response['modified_by_profile_id'] == MOCK_AUDIT_FIELDS['modified_by_profile_id'] ) assert response['modified_by_identity'] == MOCK_AUDIT_FIELDS['modified_by_identity'] assert response['modified_at'] == MOCK_AUDIT_FIELDS['modified_at'] @patch('payee.logic.secure_document.get_audit_fields') def test_tax_details_document_with_obscured_pii(mock_get_audit_fields, mock_config): """Test tax details document with obscured PII.""" account_payee_id = '1' mock_get_audit_fields.return_value = MOCK_AUDIT_FIELDS create_params = { 'account_payee_id': account_payee_id, 'vat_number': 'VAT123456789', 'country_of_tax_residency_code': 'GB', 'local_tax_id': 'LOCAL123', 'business_name': 'Test Business Ltd', 'business_number': 'BN123456', 'address_1': '123 Test Street', 'city': 'London', 'country_code': 'GB', } create_secure_document_details( mock_config.SDM_CONFIG, TaxDetailsDocument, **create_params ) result = has_secure_document_details(account_payee_id, TaxDetailsDocument) response = TaxDetailsDocument.build_response( account_payee_id, result, obscure_pii=True ) assert response is not None assert response['account_payee_id'] == account_payee_id assert response['vat_number'] is None # Should be obscured assert response['local_tax_id'] is None # Should be obscured assert response['country_of_tax_residency_code'] == 'GB' assert response['business_name'] == 'Test Business Ltd' def test_tax_details_document_build_response_with_none(): """Test that build_response handles None secure_document_item gracefully.""" account_payee_id = '1' result = TaxDetailsDocument.build_response(account_payee_id, None) assert result is None def test_tax_details_document_build_response_with_none_obscure_pii(): """Test that build_response handles None secure_document_item with obscure_pii flag.""" account_payee_id = '1' result = TaxDetailsDocument.build_response(account_payee_id, None, obscure_pii=True) assert result is None