using SIGCM2.Domain.Entities; namespace SIGCM2.Application.Tests.Domain; public class RolTests { // Happy path: full constructor sets all properties. [Fact] public void Constructor_SetsAllProperties() { var created = new DateTime(2026, 4, 15, 10, 0, 0, DateTimeKind.Utc); var modified = new DateTime(2026, 4, 15, 11, 0, 0, DateTimeKind.Utc); var rol = new Rol( id: 1, codigo: "cajero", nombre: "Cajero", descripcion: "Atención de mostrador", activo: true, fechaCreacion: created, fechaModificacion: modified ); Assert.Equal(1, rol.Id); Assert.Equal("cajero", rol.Codigo); Assert.Equal("Cajero", rol.Nombre); Assert.Equal("Atención de mostrador", rol.Descripcion); Assert.True(rol.Activo); Assert.Equal(created, rol.FechaCreacion); Assert.Equal(modified, rol.FechaModificacion); } // Triangulation: descripcion is nullable, fechaModificacion is nullable. [Fact] public void Constructor_WithNullOptionals_SetsNulls() { var created = new DateTime(2026, 4, 15, 10, 0, 0, DateTimeKind.Utc); var rol = new Rol( id: 2, codigo: "reportes", nombre: "Reportes", descripcion: null, activo: false, fechaCreacion: created, fechaModificacion: null ); Assert.Null(rol.Descripcion); Assert.Null(rol.FechaModificacion); Assert.False(rol.Activo); } // ForCreation: Id=0 (IDENTITY assigned by DB), Activo=true, FechaCreacion=SYSUTCDATETIME-ish (not set here), FechaModificacion=null. [Fact] public void ForCreation_ReturnsNewInstanceWithDefaults() { var rol = Rol.ForCreation( codigo: "picadora", nombre: "Picadora/Correctora", descripcion: "Edición de textos" ); Assert.Equal(0, rol.Id); Assert.Equal("picadora", rol.Codigo); Assert.Equal("Picadora/Correctora", rol.Nombre); Assert.Equal("Edición de textos", rol.Descripcion); Assert.True(rol.Activo); Assert.Null(rol.FechaModificacion); } // Triangulation: ForCreation accepts null descripcion. [Fact] public void ForCreation_WithNullDescripcion_AllowsNull() { var rol = Rol.ForCreation(codigo: "admin", nombre: "Administrador", descripcion: null); Assert.Null(rol.Descripcion); Assert.Equal("admin", rol.Codigo); Assert.True(rol.Activo); } }