Initial Commit

This commit is contained in:
2026-05-27 23:47:53 +01:00
parent fbc70f96e6
commit 9b28db724f
18103 changed files with 1600554 additions and 0 deletions

View File

@@ -0,0 +1,73 @@
import { SuaveplanError } from "@suaveplan/error";
import { describe, expect, it } from "@suaveplan/testing/runner";
import { SEED_CODES, SeedError } from "./error-codes.js";
describe("SEED_CODES registry", () => {
it("declares every required code with namespaced value", () => {
expect(SEED_CODES.DUPLICATE_NAME).toBe("SEED.DUPLICATE_NAME");
expect(SEED_CODES.UNREGISTERED_DEPENDENCY).toBe(
"SEED.UNREGISTERED_DEPENDENCY"
);
expect(SEED_CODES.CIRCULAR_DEPENDENCY).toBe("SEED.CIRCULAR_DEPENDENCY");
expect(SEED_CODES.DEPENDENCY_DEPTH_EXCEEDED).toBe(
"SEED.DEPENDENCY_DEPTH_EXCEEDED"
);
expect(SEED_CODES.INVALID_CONFIG).toBe("SEED.INVALID_CONFIG");
expect(SEED_CODES.STORE_ERROR).toBe("SEED.STORE_ERROR");
expect(SEED_CODES.ABORTED).toBe("SEED.ABORTED");
});
it("registry is frozen", () => {
expect(Object.isFrozen(SEED_CODES)).toBe(true);
});
});
describe("SeedError", () => {
it("every SEED.* code is reachable from a call site", () => {
for (const code of Object.values(SEED_CODES)) {
const err = new SeedError(code, `test ${code}`);
expect(err.code).toBe(code);
expect(err).toBeInstanceOf(SuaveplanError);
expect(err).toBeInstanceOf(SeedError);
expect(err).toBeInstanceOf(Error);
}
});
it("SeedError preserves cause and SuaveplanError contract", () => {
const root = new Error("underlying boom");
const err = new SeedError(SEED_CODES.STORE_ERROR, "wrap", {
cause: root,
});
expect(err.cause).toBe(root);
expect(err.code).toBe("SEED.STORE_ERROR");
expect(err.timestamp).toBeTypeOf("number");
expect(err.message).toBe("wrap");
});
it("exposes seedName discriminant when provided", () => {
const err = new SeedError(SEED_CODES.DUPLICATE_NAME, "dup", {
seedName: "users",
});
expect(err.seedName).toBe("users");
expect(err.dependency).toBeUndefined();
});
it("exposes dependency discriminant when provided", () => {
const err = new SeedError(
SEED_CODES.UNREGISTERED_DEPENDENCY,
"missing",
{
seedName: "posts",
dependency: "users",
}
);
expect(err.seedName).toBe("posts");
expect(err.dependency).toBe("users");
});
it("omits discriminants when not provided", () => {
const err = new SeedError(SEED_CODES.INVALID_CONFIG, "bad config");
expect(err.seedName).toBeUndefined();
expect(err.dependency).toBeUndefined();
});
});