73 lines
2.8 KiB
TypeScript
73 lines
2.8 KiB
TypeScript
import { ACCOUNT_STATUS, AccountStatus } from "./account-status";
|
|
|
|
describe("AccountStatus Value Object", () => {
|
|
describe("Creación de estados válidos", () => {
|
|
it("debería crear un estado inactivo correctamente", () => {
|
|
const status = AccountStatus.createInactive();
|
|
expect(status.getValue()).toBe(ACCOUNT_STATUS.INACTIVE);
|
|
});
|
|
|
|
it("debería crear un estado activo correctamente", () => {
|
|
const status = AccountStatus.createActive();
|
|
expect(status.getValue()).toBe(ACCOUNT_STATUS.ACTIVE);
|
|
});
|
|
|
|
it("debería crear un estado válido usando el método create", () => {
|
|
const result = AccountStatus.create(ACCOUNT_STATUS.ACTIVE);
|
|
expect(result.isSuccess).toBe(true);
|
|
expect(result.data.getValue()).toBe(ACCOUNT_STATUS.ACTIVE);
|
|
});
|
|
|
|
it("debería fallar al crear un estado inválido", () => {
|
|
const result = AccountStatus.create("invalid-status");
|
|
expect(result.isFailure).toBe(true);
|
|
expect(result.error.message).toBe("Estado de la cuenta no válido: invalid-status");
|
|
});
|
|
});
|
|
|
|
describe("Verificación de transiciones", () => {
|
|
it("debería permitir la transición de 'inactive' a 'active'", () => {
|
|
const status = AccountStatus.createInactive();
|
|
expect(status.canTransitionTo(ACCOUNT_STATUS.ACTIVE)).toBe(true);
|
|
});
|
|
|
|
it("debería permitir la transición de 'active' a 'inactive'", () => {
|
|
const status = AccountStatus.createActive();
|
|
expect(status.canTransitionTo(ACCOUNT_STATUS.INACTIVE)).toBe(true);
|
|
});
|
|
|
|
it("debería impedir transiciones no permitidas", () => {
|
|
const status = AccountStatus.createInactive();
|
|
expect(status.canTransitionTo("invalid")).toBe(false);
|
|
});
|
|
|
|
it("debería realizar una transición válida correctamente", () => {
|
|
const inactiveStatus = AccountStatus.createInactive();
|
|
const transitionResult = inactiveStatus.transitionTo(ACCOUNT_STATUS.ACTIVE);
|
|
|
|
expect(transitionResult.isSuccess).toBe(true);
|
|
expect(transitionResult.data.getValue()).toBe(ACCOUNT_STATUS.ACTIVE);
|
|
});
|
|
|
|
it("debería fallar en una transición inválida", () => {
|
|
const status = AccountStatus.createInactive();
|
|
const transitionResult = status.transitionTo("invalid");
|
|
|
|
expect(transitionResult.isFailure).toBe(true);
|
|
expect(transitionResult.error.message).toBe("Transición no permitida de inactive a invalid");
|
|
});
|
|
});
|
|
|
|
describe("Métodos auxiliares", () => {
|
|
it("debería devolver correctamente el valor con getValue()", () => {
|
|
const status = AccountStatus.createInactive();
|
|
expect(status.getValue()).toBe(ACCOUNT_STATUS.INACTIVE);
|
|
});
|
|
|
|
it("debería devolver correctamente el valor con toString()", () => {
|
|
const status = AccountStatus.createActive();
|
|
expect(status.toString()).toBe(ACCOUNT_STATUS.ACTIVE);
|
|
});
|
|
});
|
|
});
|