46 lines
1.2 KiB
TypeScript
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");
|
|
});
|
|
});
|