test(adm-009): IngresosBrutos handler tests mirror (Red)

This commit is contained in:
2026-04-17 18:09:44 -03:00
parent 8db2b333c0
commit 2cd25e1036
8 changed files with 606 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
using NSubstitute;
using SIGCM2.Application.Abstractions.Persistence;
using SIGCM2.Application.IngresosBrutos.GetHistorial;
using SIGCM2.Domain.Fiscal;
using IibbEntity = SIGCM2.Domain.Entities.IngresosBrutos;
namespace SIGCM2.Application.Tests.IngresosBrutos.GetHistorial;
public class GetHistorialIngresosBrutosQueryHandlerTests
{
private readonly IIngresosBrutosRepository _repo = Substitute.For<IIngresosBrutosRepository>();
private readonly GetHistorialIngresosBrutosQueryHandler _handler;
public GetHistorialIngresosBrutosQueryHandlerTests()
{
_handler = new GetHistorialIngresosBrutosQueryHandler(_repo);
}
private static IibbEntity MakeEntity(int id, int? predecesorId, DateOnly desde) =>
IibbEntity.FromDb(
id: id, provincia: ProvinciaArgentina.BuenosAires,
descripcion: "IIBB BA", alicuota: 3m, activo: true,
vigenciaDesde: desde,
vigenciaHasta: predecesorId.HasValue ? desde.AddYears(1).AddDays(-1) : null,
predecesorId: predecesorId,
fechaCreacion: DateTime.UtcNow, fechaModificacion: null);
[Fact]
public async Task Handle_ChainOf2_ReturnsListWith2ItemsInOrder()
{
var chain = new List<IibbEntity>
{
MakeEntity(1, null, new DateOnly(2023, 1, 1)),
MakeEntity(2, 1, new DateOnly(2024, 1, 1)),
};
_repo.GetHistorialAsync(2, Arg.Any<CancellationToken>()).Returns(chain);
var result = await _handler.Handle(new GetHistorialIngresosBrutosQuery(2));
Assert.Equal(2, result.Count);
Assert.Equal(1, result[0].Version);
Assert.Equal(2, result[1].Version);
}
[Fact]
public async Task Handle_SingleVersion_Returns1Item()
{
var chain = new List<IibbEntity>
{ MakeEntity(1, null, new DateOnly(2024, 1, 1)) };
_repo.GetHistorialAsync(1, Arg.Any<CancellationToken>()).Returns(chain);
var result = await _handler.Handle(new GetHistorialIngresosBrutosQuery(1));
Assert.Single(result);
Assert.Equal(ProvinciaArgentina.BuenosAires, result[0].Provincia);
}
}