using SIGCM2.Domain.Entities; namespace SIGCM2.Application.Tests.Domain; public class UsuarioTests { // Happy path: constructor sets all properties correctly [Fact] public void Constructor_SetsAllProperties() { var usuario = new Usuario( id: 1, username: "admin", passwordHash: "$2a$12$hash", nombre: "Administrador", apellido: "Sistema", email: null, rol: "admin", permisosJson: "[\"*\"]", activo: true ); Assert.Equal(1, usuario.Id); Assert.Equal("admin", usuario.Username); Assert.Equal("$2a$12$hash", usuario.PasswordHash); Assert.Equal("Administrador", usuario.Nombre); Assert.Equal("Sistema", usuario.Apellido); Assert.Null(usuario.Email); Assert.Equal("admin", usuario.Rol); Assert.Equal("[\"*\"]", usuario.PermisosJson); Assert.True(usuario.Activo); } // Triangulation: inactive user [Fact] public void Constructor_WithActivo_False_SetsActivo_False() { var usuario = new Usuario( id: 2, username: "vendedor", passwordHash: "$2a$12$hash2", nombre: "Juan", apellido: "Pérez", email: "juan@example.com", rol: "vendedor", permisosJson: "[]", activo: false ); Assert.Equal(2, usuario.Id); Assert.Equal("vendedor", usuario.Username); Assert.Equal("juan@example.com", usuario.Email); Assert.Equal("vendedor", usuario.Rol); Assert.Equal("[]", usuario.PermisosJson); Assert.False(usuario.Activo); } // Activo property reflects the actual state [Fact] public void Activo_IsTrue_WhenConstructedActive() { var usuario = new Usuario(1, "admin", "$2a$12$hash", "Admin", "Sys", null, "admin", "[\"*\"]", true); Assert.True(usuario.Activo); } [Fact] public void Activo_IsFalse_WhenConstructedInactive() { var usuario = new Usuario(2, "inactive", "$2a$12$hash", "Old", "User", null, "consulta", "[]", false); Assert.False(usuario.Activo); } }