57 lines
2.0 KiB
TypeScript
57 lines
2.0 KiB
TypeScript
import { InvoiceStatus } from "./invoice-status";
|
|
|
|
// Pruebas para InvoiceStatus
|
|
describe("InvoiceStatus", () => {
|
|
test("Debe crear estados válidos", () => {
|
|
const result1 = InvoiceStatus.create("borrador");
|
|
const result2 = InvoiceStatus.create("enviada");
|
|
const result3 = InvoiceStatus.create("cerrada");
|
|
|
|
expect(result1.isSuccess).toBe(true);
|
|
expect(result1.data.getValue()).toBe("borrador");
|
|
expect(result1.data.toString()).toBe("borrador");
|
|
|
|
expect(result2.isSuccess).toBe(true);
|
|
expect(result2.data.getValue()).toBe("enviada");
|
|
expect(result2.data.toString()).toBe("enviada");
|
|
|
|
expect(result3.isSuccess).toBe(true);
|
|
expect(result3.data.getValue()).toBe("cerrada");
|
|
expect(result3.data.toString()).toBe("cerrada");
|
|
});
|
|
|
|
test("Debe lanzar error al crear un estado inválido", () => {
|
|
const result = InvoiceStatus.create("inexistente");
|
|
expect(result.isFailure).toBe(true);
|
|
});
|
|
|
|
test("Debe permitir transiciones válidas #1", () => {
|
|
const result = InvoiceStatus.create("borrador");
|
|
expect(result.isSuccess).toBe(true);
|
|
expect(result.data.canTransitionTo("enviada")).toBe(true);
|
|
});
|
|
|
|
test("Debe permitir transiciones válidas #2", () => {
|
|
const result = InvoiceStatus.create("borrador");
|
|
expect(result.isSuccess).toBe(true);
|
|
|
|
const new_state = result.data.transitionTo("enviada");
|
|
expect(new_state.isSuccess).toBe(true);
|
|
expect(new_state.data.toString()).toBe("enviada");
|
|
});
|
|
|
|
test("Debe impedir transiciones inválidas", () => {
|
|
const result = InvoiceStatus.create("cerrada");
|
|
expect(result.isSuccess).toBe(true);
|
|
expect(result.data.canTransitionTo("enviada")).toBe(false);
|
|
});
|
|
|
|
test("Debe lanzar error al intentar transición inválida", () => {
|
|
const result = InvoiceStatus.create("borrador");
|
|
expect(result.isSuccess).toBe(true);
|
|
const new_state = result.data.transitionTo("cerrada");
|
|
expect(new_state.isSuccess).toBe(false);
|
|
expect(new_state.error.message).toContain("Transición no permitida de borrador a cerrada");
|
|
});
|
|
});
|