test(udt-011): T400.40 — update tests for TimeProvider injection and explicit now params

Fix all test compilation errors caused by T400.10/T400.20/T400.30:
- Handler constructors: add TimeProvider.System as last argument
- Domain mutator calls: add DateTime.UtcNow as explicit 'now' argument
- AuditLogger/SecurityEventLogger Build() helpers: add TimeProvider.System
- JwtService test constructors: add TimeProvider.System
Cat2 coverage already present in TimeProviderArgentinaExtensionsTests.cs:
FakeTimeProvider proves GetArgentinaToday() returns ART civil date, not UTC.
This commit is contained in:
2026-04-18 10:12:32 -03:00
parent a9838427a4
commit 9bc191c3ae
35 changed files with 79 additions and 75 deletions

View File

@@ -95,7 +95,7 @@ public class IngresosBrutosTests
{
var original = MakeIIBB(descripcion: "Original");
var updated = original.WithDescripcion("Actualizado");
var updated = original.WithDescripcion("Actualizado", DateTime.UtcNow);
updated.Should().NotBeSameAs(original);
updated.Descripcion.Should().Be("Actualizado");
@@ -107,7 +107,7 @@ public class IngresosBrutosTests
{
var original = MakeIIBB(activo: true);
var deactivated = original.Deactivate();
var deactivated = original.Deactivate(DateTime.UtcNow);
deactivated.Activo.Should().BeFalse();
deactivated.Alicuota.Should().Be(original.Alicuota);
@@ -119,7 +119,7 @@ public class IngresosBrutosTests
{
var original = MakeIIBB(activo: false);
var reactivated = original.Reactivate();
var reactivated = original.Reactivate(DateTime.UtcNow);
reactivated.Activo.Should().BeTrue();
}
@@ -130,7 +130,7 @@ public class IngresosBrutosTests
var original = MakeIIBB(vigenciaHasta: null);
var hasta = new DateOnly(2026, 5, 31);
var cerrado = original.CerrarVigencia(hasta);
var cerrado = original.CerrarVigencia(hasta, DateTime.UtcNow);
cerrado.VigenciaHasta.Should().Be(hasta);
cerrado.Alicuota.Should().Be(original.Alicuota);
@@ -143,7 +143,7 @@ public class IngresosBrutosTests
{
var predecesora = MakeIIBB(id: 5, alicuota: 2.5m, vigenciaDesde: Desde2020, vigenciaHasta: null);
var (cerrada, nueva) = predecesora.NuevaVersion(3.0m, Desde2026);
var (cerrada, nueva) = predecesora.NuevaVersion(3.0m, Desde2026, DateTime.UtcNow);
cerrada.Id.Should().Be(5);
cerrada.VigenciaHasta.Should().Be(Desde2026.AddDays(-1));
@@ -166,7 +166,7 @@ public class IngresosBrutosTests
vigenciaDesde: Desde2020,
vigenciaHasta: new DateOnly(2025, 12, 31));
var act = () => predecesora.NuevaVersion(4.0m, Desde2026);
var act = () => predecesora.NuevaVersion(4.0m, Desde2026, DateTime.UtcNow);
act.Should().Throw<InvalidOperationException>();
}
@@ -176,7 +176,7 @@ public class IngresosBrutosTests
{
var predecesora = MakeIIBB(vigenciaDesde: Desde2020, vigenciaHasta: null);
var act = () => predecesora.NuevaVersion(4.0m, Desde2020);
var act = () => predecesora.NuevaVersion(4.0m, Desde2020, DateTime.UtcNow);
act.Should().Throw<ArgumentException>()
.WithParameterName("vigenciaDesde");
@@ -187,7 +187,7 @@ public class IngresosBrutosTests
{
var predecesora = MakeIIBB(vigenciaDesde: Desde2020, vigenciaHasta: null);
var act = () => predecesora.NuevaVersion(-1m, Desde2026);
var act = () => predecesora.NuevaVersion(-1m, Desde2026, DateTime.UtcNow);
act.Should().Throw<ArgumentException>()
.WithParameterName("nuevaAlicuota");
@@ -198,7 +198,7 @@ public class IngresosBrutosTests
{
var predecesora = MakeIIBB(vigenciaDesde: Desde2020, vigenciaHasta: null);
var act = () => predecesora.NuevaVersion(101m, Desde2026);
var act = () => predecesora.NuevaVersion(101m, Desde2026, DateTime.UtcNow);
act.Should().Throw<ArgumentException>()
.WithParameterName("nuevaAlicuota");

View File

@@ -150,7 +150,7 @@ public class TipoDeIvaTests
{
var original = MakeTipoDeIva(descripcion: "Original");
var updated = original.WithDescripcion("Nueva descripcion");
var updated = original.WithDescripcion("Nueva descripcion", DateTime.UtcNow);
updated.Should().NotBeSameAs(original);
updated.Descripcion.Should().Be("Nueva descripcion");
@@ -162,7 +162,7 @@ public class TipoDeIvaTests
{
var original = MakeTipoDeIva(codigo: "IVA_21");
var updated = original.WithCodigo("NO_GRAVADO");
var updated = original.WithCodigo("NO_GRAVADO", DateTime.UtcNow);
updated.Codigo.Should().Be("NO_GRAVADO");
updated.Porcentaje.Should().Be(original.Porcentaje);
@@ -174,7 +174,7 @@ public class TipoDeIvaTests
{
var original = MakeTipoDeIva(aplicaIVA: true);
var updated = original.WithAplicaIVA(false);
var updated = original.WithAplicaIVA(false, DateTime.UtcNow);
updated.AplicaIVA.Should().BeFalse();
updated.Porcentaje.Should().Be(original.Porcentaje);
@@ -185,7 +185,7 @@ public class TipoDeIvaTests
{
var original = MakeTipoDeIva(activo: true);
var deactivated = original.Deactivate();
var deactivated = original.Deactivate(DateTime.UtcNow);
deactivated.Activo.Should().BeFalse();
deactivated.Porcentaje.Should().Be(original.Porcentaje);
@@ -197,7 +197,7 @@ public class TipoDeIvaTests
{
var original = MakeTipoDeIva(activo: false);
var reactivated = original.Reactivate();
var reactivated = original.Reactivate(DateTime.UtcNow);
reactivated.Activo.Should().BeTrue();
}
@@ -208,7 +208,7 @@ public class TipoDeIvaTests
var original = MakeTipoDeIva(vigenciaHasta: null);
var hasta = new DateOnly(2026, 5, 31);
var cerrado = original.CerrarVigencia(hasta);
var cerrado = original.CerrarVigencia(hasta, DateTime.UtcNow);
cerrado.VigenciaHasta.Should().Be(hasta);
cerrado.Porcentaje.Should().Be(original.Porcentaje);
@@ -222,7 +222,7 @@ public class TipoDeIvaTests
{
var predecesora = MakeTipoDeIva(id: 5, porcentaje: 21m, vigenciaDesde: Desde2020, vigenciaHasta: null);
var (cerrada, nueva) = predecesora.NuevaVersion(23.5m, Desde2026);
var (cerrada, nueva) = predecesora.NuevaVersion(23.5m, Desde2026, DateTime.UtcNow);
cerrada.Id.Should().Be(5);
cerrada.VigenciaHasta.Should().Be(Desde2026.AddDays(-1), "predecesora queda cerrada el día anterior");
@@ -244,7 +244,7 @@ public class TipoDeIvaTests
var predecesora = MakeTipoDeIva(porcentaje: 10.5m, vigenciaDesde: Desde2020);
var nuevaVigencia = new DateOnly(2025, 1, 1);
var (_, nueva) = predecesora.NuevaVersion(21m, nuevaVigencia);
var (_, nueva) = predecesora.NuevaVersion(21m, nuevaVigencia, DateTime.UtcNow);
nueva.Porcentaje.Should().Be(21m);
predecesora.Porcentaje.Should().Be(10.5m, "predecesora no muta");
@@ -259,7 +259,7 @@ public class TipoDeIvaTests
vigenciaDesde: Desde2020,
vigenciaHasta: new DateOnly(2025, 12, 31)); // ya cerrada
var act = () => predecesora.NuevaVersion(23.5m, Desde2026);
var act = () => predecesora.NuevaVersion(23.5m, Desde2026, DateTime.UtcNow);
act.Should().Throw<InvalidOperationException>();
}
@@ -269,7 +269,7 @@ public class TipoDeIvaTests
{
var predecesora = MakeTipoDeIva(vigenciaDesde: Desde2020, vigenciaHasta: null);
var act = () => predecesora.NuevaVersion(23.5m, Desde2020); // igual a VigenciaDesde predecesora
var act = () => predecesora.NuevaVersion(23.5m, Desde2020, DateTime.UtcNow); // igual a VigenciaDesde predecesora
act.Should().Throw<ArgumentException>()
.WithParameterName("vigenciaDesde");
@@ -281,7 +281,7 @@ public class TipoDeIvaTests
var predecesora = MakeTipoDeIva(vigenciaDesde: Desde2026, vigenciaHasta: null);
var vigenciaAnterior = new DateOnly(2020, 1, 1);
var act = () => predecesora.NuevaVersion(23.5m, vigenciaAnterior);
var act = () => predecesora.NuevaVersion(23.5m, vigenciaAnterior, DateTime.UtcNow);
act.Should().Throw<ArgumentException>()
.WithParameterName("vigenciaDesde");
@@ -292,7 +292,7 @@ public class TipoDeIvaTests
{
var predecesora = MakeTipoDeIva(vigenciaDesde: Desde2020, vigenciaHasta: null);
var act = () => predecesora.NuevaVersion(-1m, Desde2026);
var act = () => predecesora.NuevaVersion(-1m, Desde2026, DateTime.UtcNow);
act.Should().Throw<ArgumentException>()
.WithParameterName("nuevoPorcentaje");
@@ -303,7 +303,7 @@ public class TipoDeIvaTests
{
var predecesora = MakeTipoDeIva(vigenciaDesde: Desde2020, vigenciaHasta: null);
var act = () => predecesora.NuevaVersion(101m, Desde2026);
var act = () => predecesora.NuevaVersion(101m, Desde2026, DateTime.UtcNow);
act.Should().Throw<ArgumentException>()
.WithParameterName("nuevoPorcentaje");
@@ -326,7 +326,7 @@ public class TipoDeIvaTests
{
var original = MakeTipoDeIva(id: 99, porcentaje: 21m, vigenciaDesde: Desde2020);
var updated = original.WithDescripcion("Nueva");
var updated = original.WithDescripcion("Nueva", DateTime.UtcNow);
updated.Id.Should().Be(99);
updated.Porcentaje.Should().Be(21m);

View File

@@ -43,7 +43,7 @@ public class PuntoDeVentaTests
{
var original = MakePdv(id: 10, nombre: "Original");
var updated = original.WithUpdatedProfile(nombre: "Actualizado", numeroAFIP: 7, descripcion: "Desc");
var updated = original.WithUpdatedProfile(nombre: "Actualizado", numeroAFIP: 7, descripcion: "Desc", now: DateTime.UtcNow);
Assert.NotSame(original, updated);
Assert.Equal("Actualizado", updated.Nombre);
@@ -56,7 +56,7 @@ public class PuntoDeVentaTests
{
var original = MakePdv(id: 10, medioId: 5);
var updated = original.WithUpdatedProfile("Nuevo", 2, null);
var updated = original.WithUpdatedProfile("Nuevo", 2, null, DateTime.UtcNow);
Assert.Equal(10, updated.Id);
Assert.Equal(5, updated.MedioId);
@@ -69,7 +69,7 @@ public class PuntoDeVentaTests
{
var original = MakePdv();
var updated = original.WithUpdatedProfile("Nuevo", 2, null);
var updated = original.WithUpdatedProfile("Nuevo", 2, null, DateTime.UtcNow);
Assert.NotNull(updated.FechaModificacion);
}
@@ -81,7 +81,7 @@ public class PuntoDeVentaTests
{
var pdv = MakePdv(activo: true);
var deactivated = pdv.WithActivo(false);
var deactivated = pdv.WithActivo(false, DateTime.UtcNow);
Assert.False(deactivated.Activo);
Assert.NotSame(pdv, deactivated);
@@ -92,7 +92,7 @@ public class PuntoDeVentaTests
{
var pdv = MakePdv(activo: false);
var reactivated = pdv.WithActivo(true);
var reactivated = pdv.WithActivo(true, DateTime.UtcNow);
Assert.True(reactivated.Activo);
}
@@ -102,7 +102,7 @@ public class PuntoDeVentaTests
{
var pdv = MakePdv(id: 99, medioId: 3);
var toggled = pdv.WithActivo(false);
var toggled = pdv.WithActivo(false, DateTime.UtcNow);
Assert.Equal(99, toggled.Id);
Assert.Equal(3, toggled.MedioId);

View File

@@ -101,7 +101,7 @@ public class UsuarioTests
public void WithUpdatedProfile_Returns_NewInstance()
{
var u = MakeUsuario();
var updated = u.WithUpdatedProfile("NuevoNombre", "NuevoApellido", "new@x.com", "cajero", true);
var updated = u.WithUpdatedProfile("NuevoNombre", "NuevoApellido", "new@x.com", "cajero", true, DateTime.UtcNow);
Assert.NotSame(u, updated);
}
@@ -109,7 +109,7 @@ public class UsuarioTests
public void WithUpdatedProfile_Sets_Fields_Correctly()
{
var u = MakeUsuario();
var updated = u.WithUpdatedProfile("Pedro", "Gómez", "p@g.com", "cajero", false);
var updated = u.WithUpdatedProfile("Pedro", "Gómez", "p@g.com", "cajero", false, DateTime.UtcNow);
Assert.Equal("Pedro", updated.Nombre);
Assert.Equal("Gómez", updated.Apellido);
Assert.Equal("p@g.com", updated.Email);
@@ -121,8 +121,9 @@ public class UsuarioTests
public void WithUpdatedProfile_Sets_FechaModificacion_To_UtcNow()
{
var before = DateTime.UtcNow.AddSeconds(-1);
var now = DateTime.UtcNow;
var u = MakeUsuario();
var updated = u.WithUpdatedProfile("A", "B", null, "admin", true);
var updated = u.WithUpdatedProfile("A", "B", null, "admin", true, now);
Assert.NotNull(updated.FechaModificacion);
Assert.True(updated.FechaModificacion >= before);
}
@@ -131,7 +132,7 @@ public class UsuarioTests
public void WithUpdatedProfile_Preserves_Immutable_Fields()
{
var u = MakeUsuario();
var updated = u.WithUpdatedProfile("X", "Y", null, "cajero", true);
var updated = u.WithUpdatedProfile("X", "Y", null, "cajero", true, DateTime.UtcNow);
Assert.Equal(u.Id, updated.Id);
Assert.Equal(u.Username, updated.Username);
Assert.Equal(u.PasswordHash, updated.PasswordHash);
@@ -143,7 +144,7 @@ public class UsuarioTests
public void WithNewPasswordHash_Returns_NewInstance()
{
var u = MakeUsuario();
var updated = u.WithNewPasswordHash("newhash", mustChangePassword: false);
var updated = u.WithNewPasswordHash("newhash", mustChangePassword: false, DateTime.UtcNow);
Assert.NotSame(u, updated);
}
@@ -151,7 +152,7 @@ public class UsuarioTests
public void WithNewPasswordHash_Sets_Hash_And_MustChange()
{
var u = MakeUsuario();
var updated = u.WithNewPasswordHash("newhash", mustChangePassword: true);
var updated = u.WithNewPasswordHash("newhash", mustChangePassword: true, DateTime.UtcNow);
Assert.Equal("newhash", updated.PasswordHash);
Assert.True(updated.MustChangePassword);
}
@@ -160,7 +161,7 @@ public class UsuarioTests
public void WithNewPasswordHash_Clears_MustChange_When_False()
{
var u = MakeUsuario(mustChangePassword: true);
var updated = u.WithNewPasswordHash("hash2", mustChangePassword: false);
var updated = u.WithNewPasswordHash("hash2", mustChangePassword: false, DateTime.UtcNow);
Assert.False(updated.MustChangePassword);
}
@@ -168,8 +169,9 @@ public class UsuarioTests
public void WithNewPasswordHash_Sets_FechaModificacion()
{
var before = DateTime.UtcNow.AddSeconds(-1);
var now = DateTime.UtcNow;
var u = MakeUsuario();
var updated = u.WithNewPasswordHash("hash2", false);
var updated = u.WithNewPasswordHash("hash2", false, now);
Assert.NotNull(updated.FechaModificacion);
Assert.True(updated.FechaModificacion >= before);
}
@@ -208,7 +210,7 @@ public class UsuarioTests
public void WithMustChangePassword_Sets_Value_True()
{
var u = MakeUsuario(mustChangePassword: false);
var updated = u.WithMustChangePassword(true);
var updated = u.WithMustChangePassword(true, DateTime.UtcNow);
Assert.True(updated.MustChangePassword);
}
@@ -216,8 +218,9 @@ public class UsuarioTests
public void WithMustChangePassword_Sets_FechaModificacion()
{
var before = DateTime.UtcNow.AddSeconds(-1);
var now = DateTime.UtcNow;
var u = MakeUsuario();
var updated = u.WithMustChangePassword(true);
var updated = u.WithMustChangePassword(true, now);
Assert.NotNull(updated.FechaModificacion);
Assert.True(updated.FechaModificacion >= before);
}