diff --git a/tests/SIGCM2.Application.Tests/Domain/Fiscal/FiscalExceptionsTests.cs b/tests/SIGCM2.Application.Tests/Domain/Fiscal/FiscalExceptionsTests.cs new file mode 100644 index 0000000..b8a5069 --- /dev/null +++ b/tests/SIGCM2.Application.Tests/Domain/Fiscal/FiscalExceptionsTests.cs @@ -0,0 +1,99 @@ +using FluentAssertions; +using SIGCM2.Domain.Exceptions; +using SIGCM2.Domain.Fiscal; + +namespace SIGCM2.Application.Tests.Domain.Fiscal; + +public class FiscalExceptionsTests +{ + // ── T200.30: cada excepción instancia correctamente con mensaje ─────────── + + [Fact] + public void PorcentajeInmutableException_HasExpectedMessage() + { + var ex = new PorcentajeInmutableException(); + + ex.Message.Should().Contain("inmutable"); + ex.Message.Should().Contain("nueva versión"); + ex.Message.Should().Contain("/iva/"); + } + + [Fact] + public void AlicuotaInmutableException_HasExpectedMessage() + { + var ex = new AlicuotaInmutableException(); + + ex.Message.Should().Contain("inmutable"); + ex.Message.Should().Contain("nueva versión"); + ex.Message.Should().Contain("/iibb/"); + } + + [Fact] + public void PredecesorYaCerradoException_ContainsId() + { + var ex = new PredecesorYaCerradoException(42); + + ex.PredecesorId.Should().Be(42); + ex.Message.Should().Contain("42"); + } + + [Fact] + public void DuplicateCodigoException_ContainsCodigo() + { + var ex = new DuplicateCodigoException("IVA_21"); + + ex.Codigo.Should().Be("IVA_21"); + ex.Message.Should().Contain("IVA_21"); + } + + [Fact] + public void DuplicateProvinciaException_ContainsProvincia() + { + var ex = new DuplicateProvinciaException(ProvinciaArgentina.Cordoba); + + ex.Provincia.Should().Be(ProvinciaArgentina.Cordoba); + ex.Message.Should().Contain("Cordoba"); + } + + // ── Todas heredan de DomainException ───────────────────────────────────── + + [Fact] + public void PorcentajeInmutableException_InheritsFromDomainException() + { + var ex = new PorcentajeInmutableException(); + + ex.Should().BeAssignableTo(); + } + + [Fact] + public void AlicuotaInmutableException_InheritsFromDomainException() + { + var ex = new AlicuotaInmutableException(); + + ex.Should().BeAssignableTo(); + } + + [Fact] + public void PredecesorYaCerradoException_InheritsFromDomainException() + { + var ex = new PredecesorYaCerradoException(1); + + ex.Should().BeAssignableTo(); + } + + [Fact] + public void DuplicateCodigoException_InheritsFromDomainException() + { + var ex = new DuplicateCodigoException("X"); + + ex.Should().BeAssignableTo(); + } + + [Fact] + public void DuplicateProvinciaException_InheritsFromDomainException() + { + var ex = new DuplicateProvinciaException(ProvinciaArgentina.Salta); + + ex.Should().BeAssignableTo(); + } +}