mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-03 05:45:04 +03:00
105 lines
2.9 KiB
TypeScript
105 lines
2.9 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
vi.mock("../../../../shared/utils/apiAuth", () => ({
|
|
isAuthenticated: vi.fn(),
|
|
}));
|
|
|
|
vi.mock("../../../../lib/localDb", () => ({
|
|
getSettings: vi.fn(),
|
|
updateSettings: vi.fn(),
|
|
}));
|
|
|
|
vi.mock("../../../../lib/memory/settings", async () => {
|
|
const actual = await vi.importActual("../../../../lib/memory/settings");
|
|
return {
|
|
...actual,
|
|
invalidateMemorySettingsCache: vi.fn(),
|
|
};
|
|
});
|
|
|
|
import { GET, PUT } from "../memory/route";
|
|
import { isAuthenticated } from "../../../../shared/utils/apiAuth";
|
|
import { getSettings, updateSettings } from "../../../../lib/localDb";
|
|
import { invalidateMemorySettingsCache } from "../../../../lib/memory/settings";
|
|
|
|
function createRequest(method: "GET" | "PUT", body?: unknown) {
|
|
return new Request("http://localhost/api/settings/memory", {
|
|
method,
|
|
headers: { "Content-Type": "application/json" },
|
|
body: body === undefined ? undefined : JSON.stringify(body),
|
|
});
|
|
}
|
|
|
|
describe("/api/settings/memory", () => {
|
|
beforeEach(() => {
|
|
vi.resetAllMocks();
|
|
(isAuthenticated as any).mockResolvedValue(true);
|
|
(getSettings as any).mockResolvedValue({
|
|
memoryEnabled: true,
|
|
memoryMaxTokens: 2000,
|
|
memoryRetentionDays: 30,
|
|
memoryStrategy: "hybrid",
|
|
skillsEnabled: false,
|
|
});
|
|
(updateSettings as any).mockImplementation(async (updates: Record<string, unknown>) => ({
|
|
memoryEnabled: true,
|
|
memoryMaxTokens: 2000,
|
|
memoryRetentionDays: 30,
|
|
memoryStrategy: "hybrid",
|
|
skillsEnabled: false,
|
|
...updates,
|
|
}));
|
|
});
|
|
|
|
it("returns normalized memory and skills settings", async () => {
|
|
(getSettings as any).mockResolvedValue({
|
|
memoryEnabled: false,
|
|
memoryMaxTokens: 3200,
|
|
memoryRetentionDays: 999,
|
|
memoryStrategy: "recent",
|
|
skillsEnabled: true,
|
|
});
|
|
|
|
const res = await GET(createRequest("GET") as any);
|
|
|
|
expect(res.status).toBe(200);
|
|
await expect(res.json()).resolves.toEqual({
|
|
enabled: false,
|
|
maxTokens: 3200,
|
|
retentionDays: 365,
|
|
strategy: "recent",
|
|
skillsEnabled: true,
|
|
});
|
|
});
|
|
|
|
it("persists updates and clears the cached settings snapshot", async () => {
|
|
const res = await PUT(
|
|
createRequest("PUT", {
|
|
enabled: false,
|
|
maxTokens: 0,
|
|
retentionDays: 14,
|
|
strategy: "semantic",
|
|
skillsEnabled: true,
|
|
}) as any
|
|
);
|
|
|
|
expect(res.status).toBe(200);
|
|
expect(updateSettings).toHaveBeenCalledOnce();
|
|
expect(updateSettings).toHaveBeenCalledWith({
|
|
memoryEnabled: false,
|
|
memoryMaxTokens: 0,
|
|
memoryRetentionDays: 14,
|
|
memoryStrategy: "semantic",
|
|
skillsEnabled: true,
|
|
});
|
|
expect(invalidateMemorySettingsCache).toHaveBeenCalledOnce();
|
|
await expect(res.json()).resolves.toEqual({
|
|
enabled: false,
|
|
maxTokens: 0,
|
|
retentionDays: 14,
|
|
strategy: "semantic",
|
|
skillsEnabled: true,
|
|
});
|
|
});
|
|
});
|