"""Tests for WorksheetTaxCorrection schemas.""" from decimal import Decimal from marshmallow.exceptions import ValidationError import pytest from payment.schemas.worksheet_tax_correction import ( TaxCorrectionDeleteRequestSchema, WorksheetTaxCorrectionCreateSchema, WorksheetTaxCorrectionDetailSchema, WorksheetTaxCorrectionsFilterParamsPostSchema, ) def test_worksheet_tax_correction_create_schema_success(): """Test WorksheetTaxCorrectionCreateSchema validation success.""" test_data = { 'contract_id': 1, 'account_id': 1, 'correction_statement_period_id': 1, 'payable_detail_type_id': 1, 'amount': '10.00', 'currency_code': 'USD', 'note': 'test note 1', } result = WorksheetTaxCorrectionCreateSchema().load(test_data) assert result == {**test_data, 'amount': Decimal(test_data['amount'])} def test_worksheet_tax_correction_create_schema_failure(): """Test WorksheetTaxCorrectionCreateSchema validation failure.""" with pytest.raises(ValidationError) as exc_info: WorksheetTaxCorrectionCreateSchema().load({}) assert set(exc_info.value.messages_dict.keys()) == { 'contract_id', 'account_id', 'correction_statement_period_id', 'payable_detail_type_id', 'amount', 'currency_code', } def test_worksheet_tax_correction_detail_schema_success(): """Test WorksheetTaxCorrectionCreateSchema dump.""" test_data = { 'worksheet_tax_correction_id': 1, 'contract_id': 1, 'account_id': 1, 'correction_statement_period_id': 1, 'payable_detail_type_id': 1, 'amount': '10.00', 'currency_code': 'USD', 'note': 'test note 1', } result = WorksheetTaxCorrectionDetailSchema().dump(test_data) assert result == test_data def test_paginated_worksheet_tax_corrections_input_schema_success(): """Test WorksheetTaxCorrectionsFilterParamsPostSchema validation success.""" test_data = { 'filters': { 'contract_ids': [1, 2, 3], 'correction_statement_period_id': 1, } } result = WorksheetTaxCorrectionsFilterParamsPostSchema().load(test_data) assert result == test_data def test_paginated_worksheet_tax_corrections_input_schema_failure(): """Test WorksheetTaxCorrectionsFilterParamsPostSchema validation failure.""" test_data = { 'filters': { 'contract_ids': ['1a', '2b', '3c'], 'correction_statement_period_id': '1d', } } with pytest.raises(ValidationError) as exc_info: WorksheetTaxCorrectionsFilterParamsPostSchema().load(test_data) assert set(exc_info.value.messages_dict.get('filters', {}).keys()) == { 'contract_ids', 'correction_statement_period_id', } def test_tax_correction_delete_req_schema(): """Test tax correction delete ids request schema.""" worksheet_tax_correction_ids = {'worksheet_tax_correction_ids': [1, 3]} schema = TaxCorrectionDeleteRequestSchema() assert schema.dump(worksheet_tax_correction_ids) == worksheet_tax_correction_ids # noqa: E501