"""Unit tests for ledger_contract_advance_applied schema.""" from decimal import Decimal from ledger.schemas.ledger_contract_advance_applied import ( LedgerContractAdvanceAppliedDetailSchema, LedgerContractAdvancePostSchema, ) from tests.utils.factories import LedgerContractAdvanceAppliedFactory def test_ledger_contract_advance_post_schema_load(): """Test ledger_contract_advance post schema load.""" mock_post_data = { 'abacus_event_id': 7, 'account_id': 1, 'contract_id': 1, 'statement_period_id': 1, 'advance_amount': '150.00', 'advance_currency_code': 'USD', 'account_payment_currency_code': 'USD', 'exchange_rate': '1.00', 'vat_amount': '20.00', 'withholding_tax_amount': '-10.00', 'amount_after_withholding_and_vat': '140.00', 'us_source_income_rate': '90.00', 'worksheet_payment_contract_advance_id': 1, 'advance_amount_payee_currency': '112.00', 'amount_after_withholding_and_vat_payee_currency': '100.00', 'withholding_tax_amount_payee_currency': '-8.00', 'vat_amount_payee_currency': '10.00', } expected_result = { 'abacus_event_id': 7, 'account_id': 1, 'contract_id': 1, 'statement_period_id': 1, 'advance_amount': Decimal('150.00'), 'advance_currency_code': 'USD', 'account_payment_currency_code': 'USD', 'exchange_rate': Decimal('1.00'), 'vat_amount': Decimal('20.00'), 'withholding_tax_amount': Decimal('-10.00'), 'amount_after_withholding_and_vat': Decimal('140.00'), 'us_source_income_rate': Decimal('90.00'), 'worksheet_payment_contract_advance_id': 1, 'advance_amount_payee_currency': Decimal('112.00'), 'amount_after_withholding_and_vat_payee_currency': Decimal('100.00'), 'withholding_tax_amount_payee_currency': Decimal('-8.00'), 'vat_amount_payee_currency': Decimal('10.00'), } result = LedgerContractAdvancePostSchema().load(mock_post_data) assert result == expected_result def test_ledger_contract_advance_applied_detail_schema(mock_event_fixtures): """Test ledger_contract_advance_applied detail serialization.""" ledger = LedgerContractAdvanceAppliedFactory.create( worksheet_payment_contract_advance_id=1, exchange_rate=Decimal('1.001') ) result = LedgerContractAdvanceAppliedDetailSchema().dump(ledger) assert result == { 'ledger_contract_advance_applied_id': ledger.ledger_contract_advance_applied_id, 'abacus_event_id': ledger.abacus_event_id, 'account_id': ledger.account_id, 'contract_id': ledger.contract_id, 'contract_advance_id': ledger.contract_advance_id, 'statement_period_id': ledger.statement_period_id, 'advance_amount': str(ledger.advance_amount), 'advance_currency_code': ledger.advance_currency_code, 'advance_amount_payee_currency': str(ledger.advance_amount_payee_currency), 'advance_payee_currency_code': ledger.advance_payee_currency_code, 'vat_amount': str(ledger.vat_amount), 'vat_amount_payee_currency': str(ledger.vat_amount_payee_currency), 'withholding_tax_amount': str(ledger.withholding_tax_amount), 'withholding_tax_amount_payee_currency': str( ledger.withholding_tax_amount_payee_currency ), 'amount_after_withholding_and_vat': str( ledger.amount_after_withholding_and_vat ), 'amount_after_withholding_and_vat_payee_currency': str( ledger.amount_after_withholding_and_vat_payee_currency ), 'us_source_income_rate': str(ledger.us_source_income_rate), 'worksheet_payment_contract_advance_id': ledger.worksheet_payment_contract_advance_id, 'exchange_rate': str(ledger.exchange_rate), }