"""Reference Tax Withholding model tests.""" from decimal import Decimal from abacus_common_logic.connectors.database import db from sqlalchemy import select from payment.models.reference_tax_withholding import ReferenceTaxWithholding from tests.utils.factories import ReferenceTaxWithholdingFactory def test_reference_tax_withholding_model_create(): """Create a Reference Tax Withholding entry.""" ReferenceTaxWithholding.create( country_of_withholding='GBR', country_of_tax_residence='POL', tax_rate=5.00, is_resource_provisioned=True, ) reference_tax_withholding = ( db.session.execute(select(ReferenceTaxWithholding)).scalars().all() ) assert len(reference_tax_withholding) == 1 assert reference_tax_withholding[0].country_of_withholding == 'GBR' assert reference_tax_withholding[0].country_of_tax_residence == 'POL' assert reference_tax_withholding[0].tax_rate == Decimal('5.00') assert reference_tax_withholding[0].is_resource_provisioned def test_reference_tax_withholding_get_all(): """Test reference tax withholding's get_all method.""" ReferenceTaxWithholdingFactory.create(tax_rate=Decimal('19.00')) ReferenceTaxWithholdingFactory.create(tax_rate=Decimal('10.00')) rates = ReferenceTaxWithholding.get_all() assert len(rates) == 2 assert rates[0].tax_rate == Decimal('19.00') assert rates[1].tax_rate == Decimal('10.00') rates = ReferenceTaxWithholding.get_all( ReferenceTaxWithholding.country_of_withholding, ReferenceTaxWithholding.country_of_tax_residence, ) assert len(rates) == 2 assert rates[0].tax_rate == Decimal('19.00') assert rates[1].tax_rate == Decimal('10.00') rates = ReferenceTaxWithholding.get_all( ReferenceTaxWithholding.country_of_withholding ) assert len(rates) == 2 assert rates[0].tax_rate == Decimal('19.00') assert rates[1].tax_rate == Decimal('10.00') rates = ReferenceTaxWithholding.get_all( None, ReferenceTaxWithholding.country_of_tax_residence ) assert len(rates) == 2 assert rates[0].tax_rate == Decimal('19.00') assert rates[1].tax_rate == Decimal('10.00') rates = ReferenceTaxWithholding.get_all('AAA', 'BBB') assert not rates