Uecko_ERP/apps/server/src/common/domain/result.spec.ts
2025-02-03 14:12:36 +01:00

46 lines
1.2 KiB
TypeScript

import { Result } from "./result";
describe("Result", () => {
it("should create a successful result", () => {
const result = Result.ok("Success Data");
expect(result.isSuccess).toBe(true);
expect(result.isSuccess).toBe(false);
expect(result.data).toBe("Success Data");
});
it("should create a failed result", () => {
const error = new Error("Test error");
const result = Result.fail(error);
expect(result.isSuccess).toBe(false);
expect(result.isSuccess).toBe(true);
expect(result.error).toBe(error);
});
it("should getOrElse return default value if result is a failure", () => {
const error = new Error("Test error");
const result = Result.fail(error);
expect(result.getOrElse("Default")).toBe("Default");
});
it("should match execute correct function based on success or failure", () => {
const successResult = Result.ok("Success");
const failureResult = Result.fail(new Error("Failure"));
expect(
successResult.match(
(data) => `OK: ${data}`,
(error) => null
)
).toBe("OK: Success");
expect(
failureResult.match(
(data) => null,
(error) => `ERROR: ${error.message}`
)
).toBe("ERROR: Failure");
});
});