"""Tests for account_payment_term serialization.""" from abacus_account.schemas.account_payment_term import ( AccountPaymentTermDetailSchema, AccountPaymentTermPostSchema, AccountPaymentTermPutSchema, ) from abacus_account.tests.utils.factories import AccountPaymentTermFactory def test_account_payment_term_detail_schema(reference_payment_entity_fixture): """Test account payment term serialization.""" account_payment_term = AccountPaymentTermFactory.build() result = AccountPaymentTermDetailSchema().dump(account_payment_term) assert result == { 'account_payment_term_id': account_payment_term.account_payment_term_id, 'account_id': account_payment_term.account_id, 'currency_code': account_payment_term.currency_code, 'payment_entity_id': account_payment_term.payment_entity_id, 'payment_schedule': account_payment_term.payment_schedule, 'payment_minimum': account_payment_term.payment_minimum, 'agreement_type_id': 1, } def test_account_payment_term_post_schema(reference_payment_entity_fixture): """Test account payment term POST serialization.""" account_payment_term = AccountPaymentTermFactory.build() mock_post_body = { 'account_id': account_payment_term.account_id, 'currency_code': account_payment_term.currency_code, 'payment_entity_id': account_payment_term.payment_entity_id, 'payment_schedule': account_payment_term.payment_schedule, 'payment_minimum': account_payment_term.payment_minimum, 'agreement_type_id': account_payment_term.agreement_type_id, } result = AccountPaymentTermPostSchema().dump(mock_post_body) assert result == { 'account_id': account_payment_term.account_id, 'currency_code': account_payment_term.currency_code, 'payment_schedule': account_payment_term.payment_schedule, 'payment_minimum': account_payment_term.payment_minimum, 'agreement_type_id': account_payment_term.agreement_type_id, 'payment_entity_id': account_payment_term.payment_entity_id, } def test_account_payment_term_post_schema_nullable(): """Test account payment term POST serialization with none values.""" account_payment_term = AccountPaymentTermFactory.build() mock_post_body = { 'account_id': account_payment_term.account_id, 'currency_code': account_payment_term.currency_code, 'payment_schedule': account_payment_term.payment_schedule, 'payment_minimum': None, 'agreement_type_id': account_payment_term.agreement_type_id, 'payment_entity_id': None, } result = AccountPaymentTermPostSchema().dump(mock_post_body) assert result == { 'account_id': account_payment_term.account_id, 'currency_code': account_payment_term.currency_code, 'payment_schedule': account_payment_term.payment_schedule, 'payment_minimum': None, 'agreement_type_id': account_payment_term.agreement_type_id, 'payment_entity_id': None, } def test_account_payment_term_put_schema(reference_payment_entity_fixture): """Test account payment term PUT serialization.""" account_payment_term = AccountPaymentTermFactory.build() mock_put_body = { 'currency_code': account_payment_term.currency_code, 'payment_schedule': account_payment_term.payment_schedule, 'payment_minimum': account_payment_term.payment_minimum, 'agreement_type_id': account_payment_term.agreement_type_id, 'payment_entity_id': account_payment_term.payment_entity_id, } result = AccountPaymentTermPutSchema().dump(mock_put_body) assert result == { 'currency_code': account_payment_term.currency_code, 'payment_schedule': account_payment_term.payment_schedule, 'payment_minimum': account_payment_term.payment_minimum, 'agreement_type_id': account_payment_term.agreement_type_id, 'payment_entity_id': account_payment_term.payment_entity_id, }