139 lines
4.4 KiB
C#
139 lines
4.4 KiB
C#
|
|
using SIGCM2.Domain.Entities;
|
||
|
|
|
||
|
|
namespace SIGCM2.Application.Tests.Domain;
|
||
|
|
|
||
|
|
public class PuntoDeVentaTests
|
||
|
|
{
|
||
|
|
private static PuntoDeVenta MakePdv(
|
||
|
|
int id = 1,
|
||
|
|
int medioId = 5,
|
||
|
|
short numeroAFIP = 1,
|
||
|
|
string nombre = "PdV Central",
|
||
|
|
string? descripcion = null,
|
||
|
|
bool activo = true)
|
||
|
|
=> new(id, medioId, numeroAFIP, nombre, descripcion, activo, DateTime.UtcNow, null);
|
||
|
|
|
||
|
|
// ── ForCreation ───────────────────────────────────────────────────────────
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void ForCreation_SetsCorrectValues()
|
||
|
|
{
|
||
|
|
var pdv = PuntoDeVenta.ForCreation(medioId: 5, numeroAFIP: 3, nombre: "PdV Sur", descripcion: null);
|
||
|
|
|
||
|
|
Assert.Equal(0, pdv.Id);
|
||
|
|
Assert.Equal(5, pdv.MedioId);
|
||
|
|
Assert.Equal(3, pdv.NumeroAFIP);
|
||
|
|
Assert.Equal("PdV Sur", pdv.Nombre);
|
||
|
|
Assert.Null(pdv.Descripcion);
|
||
|
|
Assert.True(pdv.Activo);
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void ForCreation_WithDescripcion_SetsDescripcion()
|
||
|
|
{
|
||
|
|
var pdv = PuntoDeVenta.ForCreation(5, 1, "PdV Norte", "Descripcion larga");
|
||
|
|
|
||
|
|
Assert.Equal("Descripcion larga", pdv.Descripcion);
|
||
|
|
}
|
||
|
|
|
||
|
|
// ── WithUpdatedProfile ────────────────────────────────────────────────────
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void WithUpdatedProfile_ReturnsNewInstanceWithUpdatedFields()
|
||
|
|
{
|
||
|
|
var original = MakePdv(id: 10, nombre: "Original");
|
||
|
|
|
||
|
|
var updated = original.WithUpdatedProfile(nombre: "Actualizado", numeroAFIP: 7, descripcion: "Desc");
|
||
|
|
|
||
|
|
Assert.NotSame(original, updated);
|
||
|
|
Assert.Equal("Actualizado", updated.Nombre);
|
||
|
|
Assert.Equal(7, updated.NumeroAFIP);
|
||
|
|
Assert.Equal("Desc", updated.Descripcion);
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void WithUpdatedProfile_ImmutableFields_Preserved()
|
||
|
|
{
|
||
|
|
var original = MakePdv(id: 10, medioId: 5);
|
||
|
|
|
||
|
|
var updated = original.WithUpdatedProfile("Nuevo", 2, null);
|
||
|
|
|
||
|
|
Assert.Equal(10, updated.Id);
|
||
|
|
Assert.Equal(5, updated.MedioId);
|
||
|
|
Assert.Equal(original.Activo, updated.Activo);
|
||
|
|
Assert.Equal(original.FechaCreacion, updated.FechaCreacion);
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void WithUpdatedProfile_SetsFechaModificacion()
|
||
|
|
{
|
||
|
|
var original = MakePdv();
|
||
|
|
|
||
|
|
var updated = original.WithUpdatedProfile("Nuevo", 2, null);
|
||
|
|
|
||
|
|
Assert.NotNull(updated.FechaModificacion);
|
||
|
|
}
|
||
|
|
|
||
|
|
// ── WithActivo ────────────────────────────────────────────────────────────
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void WithActivo_False_ReturnsDomainObjectWithActivoFalse()
|
||
|
|
{
|
||
|
|
var pdv = MakePdv(activo: true);
|
||
|
|
|
||
|
|
var deactivated = pdv.WithActivo(false);
|
||
|
|
|
||
|
|
Assert.False(deactivated.Activo);
|
||
|
|
Assert.NotSame(pdv, deactivated);
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void WithActivo_True_ReturnsDomainObjectWithActivoTrue()
|
||
|
|
{
|
||
|
|
var pdv = MakePdv(activo: false);
|
||
|
|
|
||
|
|
var reactivated = pdv.WithActivo(true);
|
||
|
|
|
||
|
|
Assert.True(reactivated.Activo);
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void WithActivo_ImmutableFields_Preserved()
|
||
|
|
{
|
||
|
|
var pdv = MakePdv(id: 99, medioId: 3);
|
||
|
|
|
||
|
|
var toggled = pdv.WithActivo(false);
|
||
|
|
|
||
|
|
Assert.Equal(99, toggled.Id);
|
||
|
|
Assert.Equal(3, toggled.MedioId);
|
||
|
|
Assert.Equal(pdv.NumeroAFIP, toggled.NumeroAFIP);
|
||
|
|
Assert.Equal(pdv.Nombre, toggled.Nombre);
|
||
|
|
}
|
||
|
|
|
||
|
|
// ── Constructor sets all properties ───────────────────────────────────────
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void Constructor_SetsAllProperties()
|
||
|
|
{
|
||
|
|
var now = DateTime.UtcNow;
|
||
|
|
var pdv = new PuntoDeVenta(
|
||
|
|
id: 7,
|
||
|
|
medioId: 3,
|
||
|
|
numeroAFIP: 4,
|
||
|
|
nombre: "PdV Test",
|
||
|
|
descripcion: "Desc Test",
|
||
|
|
activo: true,
|
||
|
|
fechaCreacion: now,
|
||
|
|
fechaModificacion: null);
|
||
|
|
|
||
|
|
Assert.Equal(7, pdv.Id);
|
||
|
|
Assert.Equal(3, pdv.MedioId);
|
||
|
|
Assert.Equal(4, pdv.NumeroAFIP);
|
||
|
|
Assert.Equal("PdV Test", pdv.Nombre);
|
||
|
|
Assert.Equal("Desc Test", pdv.Descripcion);
|
||
|
|
Assert.True(pdv.Activo);
|
||
|
|
Assert.Equal(now, pdv.FechaCreacion);
|
||
|
|
Assert.Null(pdv.FechaModificacion);
|
||
|
|
}
|
||
|
|
}
|