- enforce-catch-type: 增加 TSUnknownKeyword 判断,消除28个 TS6 假阳性 - no-empty-function: 统一为注释方案,移除测试/生产分支和 eslint-disable 引导 - logger.ts: 空函数体改为注释说明,删除无用 eslint-disable 指令 - 补充15处 catch 子句 : unknown 类型注解 - 清理7个测试文件失效 eslint-disable 指令 - chat/send.ts: 提取 getModelWithProvider DAO,消除直接 Drizzle 操作 - projects/update.ts: 修复死代码+条件逻辑 bug - providers/update.ts: 补充至少一个字段校验 - 前端: inline style → CSS className, ProviderFormModal whitespace 校验 - 开发文档: 更新 Zod 使用说明(AI SDK 框架级约束)
73 lines
1.9 KiB
TypeScript
73 lines
1.9 KiB
TypeScript
import { describe, expect, mock, test } from "bun:test";
|
|
import { createElement } from "react";
|
|
|
|
import type { Logger } from "../../../src/web/utils/logger";
|
|
|
|
import { useLogger } from "../../../src/web/hooks/use-logger";
|
|
import { renderWithProviders } from "../test-utils";
|
|
|
|
function HookTester({ onMount }: { onMount: (logger: Logger) => void }) {
|
|
const logger = useLogger();
|
|
onMount(logger);
|
|
return null;
|
|
}
|
|
|
|
describe("useLogger", () => {
|
|
test("返回 Logger 实例含所有方法", () => {
|
|
let logger: Logger | undefined;
|
|
const onMount = (l: Logger) => {
|
|
logger = l;
|
|
};
|
|
|
|
renderWithProviders(createElement(HookTester, { onMount }));
|
|
|
|
expect(logger).toBeDefined();
|
|
expect(typeof logger!.debug).toBe("function");
|
|
expect(typeof logger!.info).toBe("function");
|
|
expect(typeof logger!.warn).toBe("function");
|
|
expect(typeof logger!.error).toBe("function");
|
|
expect(typeof logger!.child).toBe("function");
|
|
expect(typeof logger!.setLevel).toBe("function");
|
|
});
|
|
|
|
test("调用 logger.warn 时静默不抛异常", () => {
|
|
const warnSpy = mock(() => {});
|
|
const origWarn = console.warn;
|
|
console.warn = warnSpy;
|
|
|
|
let logger: Logger | undefined;
|
|
renderWithProviders(
|
|
createElement(HookTester, {
|
|
onMount: (l: Logger) => {
|
|
logger = l;
|
|
},
|
|
}),
|
|
);
|
|
|
|
expect(() => logger!.warn("测试警告")).not.toThrow();
|
|
|
|
console.warn = origWarn;
|
|
expect(warnSpy).toHaveBeenCalled();
|
|
});
|
|
|
|
test("调用 logger.error 时静默不抛异常", () => {
|
|
const errorSpy = mock(() => {});
|
|
const origError = console.error;
|
|
console.error = errorSpy;
|
|
|
|
let logger: Logger | undefined;
|
|
renderWithProviders(
|
|
createElement(HookTester, {
|
|
onMount: (l: Logger) => {
|
|
logger = l;
|
|
},
|
|
}),
|
|
);
|
|
|
|
expect(() => logger!.error("测试错误")).not.toThrow();
|
|
|
|
console.error = origError;
|
|
expect(errorSpy).toHaveBeenCalled();
|
|
});
|
|
});
|