import { describe, expect, test } from "bun:test"; import type { Checker } from "../../../../src/server/checker/runner/types"; import type { CheckResult, ResolvedTarget } from "../../../../src/server/checker/types"; import { CheckerRegistry } from "../../../../src/server/checker/runner/registry"; function createChecker(type: string): Checker { return { execute: () => Promise.resolve({} as unknown as CheckResult), resolve: () => ({}) as unknown as ResolvedTarget, serialize: () => ({ config: "", target: "" }), type, }; } describe("CheckerRegistry", () => { test("注册并获取 Checker", () => { const registry = new CheckerRegistry(); const checker = createChecker("http"); registry.register(checker); expect(registry.get("http")).toBe(checker); }); test("获取未注册的 type 抛出错误", () => { const registry = new CheckerRegistry(); expect(() => registry.get("unknown")).toThrow("不支持的 probe type"); }); test("重复注册同一 type 抛出错误", () => { const registry = new CheckerRegistry(); registry.register(createChecker("http")); expect(() => registry.register(createChecker("http"))).toThrow("已注册"); }); test("查询支持的 type 列表", () => { const registry = new CheckerRegistry(); registry.register(createChecker("http")); registry.register(createChecker("command")); expect(registry.supportedTypes).toEqual(["http", "command"]); }); });