85 lines
3.0 KiB
TypeScript
85 lines
3.0 KiB
TypeScript
import { describe, it, afterEach } from "node:test";
|
|
import assert from "node:assert/strict";
|
|
|
|
const mod = await import("../../open-sse/services/payloadRules.ts");
|
|
|
|
describe("payloadRules", () => {
|
|
afterEach(() => {
|
|
mod.resetPayloadRulesConfigForTests();
|
|
});
|
|
|
|
describe("normalizePayloadRulesConfig", () => {
|
|
it("returns default shape for null input", () => {
|
|
const result = mod.normalizePayloadRulesConfig(null);
|
|
assert.ok(Array.isArray(result.default));
|
|
assert.ok(Array.isArray(result.override));
|
|
assert.ok(Array.isArray(result.filter));
|
|
assert.ok(Array.isArray(result.defaultRaw));
|
|
});
|
|
|
|
it("returns default shape for empty object", () => {
|
|
const result = mod.normalizePayloadRulesConfig({});
|
|
assert.equal(result.default.length, 0);
|
|
assert.equal(result.override.length, 0);
|
|
assert.equal(result.filter.length, 0);
|
|
});
|
|
|
|
it("parses mutation rules", () => {
|
|
const input = {
|
|
default: [{ models: [{ name: "gpt-4" }], params: { temperature: 0.7 } }],
|
|
};
|
|
const result = mod.normalizePayloadRulesConfig(input);
|
|
assert.equal(result.default.length, 1);
|
|
assert.equal(result.default[0].models[0].name, "gpt-4");
|
|
});
|
|
|
|
it("parses filter rules", () => {
|
|
const input = {
|
|
filter: [{ models: [{ name: "*" }], params: ["stream"] }],
|
|
};
|
|
const result = mod.normalizePayloadRulesConfig(input);
|
|
assert.equal(result.filter.length, 1);
|
|
assert.equal(result.filter[0].params[0], "stream");
|
|
});
|
|
|
|
it("handles legacy default-raw key", () => {
|
|
const input = {
|
|
"default-raw": [{ models: [{ name: "test" }], params: { key: "val" } }],
|
|
};
|
|
const result = mod.normalizePayloadRulesConfig(input);
|
|
assert.ok(result.defaultRaw.length >= 1);
|
|
});
|
|
|
|
it("filters out invalid mutation rules", () => {
|
|
const input = {
|
|
default: [
|
|
{ models: [], params: {} }, // empty models → filtered
|
|
{ models: [{ name: "valid" }], params: { k: "v" } },
|
|
],
|
|
};
|
|
const result = mod.normalizePayloadRulesConfig(input);
|
|
assert.equal(result.default.length, 1);
|
|
});
|
|
});
|
|
|
|
describe("setPayloadRulesConfig / clearPayloadRulesConfigOverride", () => {
|
|
it("setPayloadRulesConfig sets override", () => {
|
|
mod.setPayloadRulesConfig({ default: [{ models: [{ name: "m" }], params: { p: 1 } }] });
|
|
// No assertion needed — just verifying it doesn't throw
|
|
});
|
|
|
|
it("clearPayloadRulesConfigOverride clears override", () => {
|
|
mod.setPayloadRulesConfig({ default: [{ models: [{ name: "m" }], params: { p: 1 } }] });
|
|
mod.clearPayloadRulesConfigOverride();
|
|
// No assertion needed — verifying it doesn't throw
|
|
});
|
|
});
|
|
|
|
describe("resetPayloadRulesConfigForTests", () => {
|
|
it("resets state without throwing", () => {
|
|
mod.setPayloadRulesConfig({ default: [{ models: [{ name: "m" }], params: { p: 1 } }] });
|
|
mod.resetPayloadRulesConfigForTests();
|
|
});
|
|
});
|
|
});
|