Files
OmniRoute/tests/unit/memory-settings.test.ts
diegosouzapw cc243a9d47 fix(memory): defensive markNeedsReindex + drain setImmediate in legacy tests
- store.ts: wrap markMemoryNeedsReindex in safeMarkNeedsReindex helper that swallows
  errors when the DB is no longer available (e.g. test teardown after the parent
  promise resolved). Prevents fire-and-forget vector upserts from triggering
  unhandledRejection in tests.
- memory-store.test.ts: drain setImmediate in afterEach/after hooks so pending
  vector upsert tasks settle before DATA_DIR is removed.
- memory-settings.test.ts: extend deepEqual expected shape with the 7 new fields
  introduced by plan 21 F5 (embeddingSource, embeddingProviderModel,
  transformersEnabled, staticEnabled, rerankEnabled, rerankProviderModel,
  vectorStore).
2026-05-28 11:02:25 -03:00

77 lines
2.3 KiB
TypeScript

import assert from "node:assert/strict";
import { describe, test } from "node:test";
import {
DEFAULT_MEMORY_SETTINGS,
normalizeMemorySettings,
toMemoryRetrievalConfig,
toMemorySettingsUpdates,
} from "../../src/lib/memory/settings.ts";
describe("memory settings helpers", () => {
test("normalizeMemorySettings applies defaults and clamps persisted values", () => {
const settings = normalizeMemorySettings({
memoryEnabled: "yes",
memoryMaxTokens: 20001,
memoryRetentionDays: 0,
memoryStrategy: "unsupported",
skillsEnabled: true,
});
assert.deepEqual(settings, {
enabled: DEFAULT_MEMORY_SETTINGS.enabled,
maxTokens: 16000,
retentionDays: 1,
strategy: DEFAULT_MEMORY_SETTINGS.strategy,
skillsEnabled: true,
// Plan 21 — Memory Engine Redesign extended fields (default values)
embeddingSource: DEFAULT_MEMORY_SETTINGS.embeddingSource,
embeddingProviderModel: DEFAULT_MEMORY_SETTINGS.embeddingProviderModel,
transformersEnabled: DEFAULT_MEMORY_SETTINGS.transformersEnabled,
staticEnabled: DEFAULT_MEMORY_SETTINGS.staticEnabled,
rerankEnabled: DEFAULT_MEMORY_SETTINGS.rerankEnabled,
rerankProviderModel: DEFAULT_MEMORY_SETTINGS.rerankProviderModel,
vectorStore: DEFAULT_MEMORY_SETTINGS.vectorStore,
});
});
test("toMemorySettingsUpdates maps UI fields to persisted keys", () => {
assert.deepEqual(
toMemorySettingsUpdates({
enabled: false,
maxTokens: 4096,
retentionDays: 21,
strategy: "hybrid",
skillsEnabled: true,
}),
{
memoryEnabled: false,
memoryMaxTokens: 4096,
memoryRetentionDays: 21,
memoryStrategy: "hybrid",
skillsEnabled: true,
}
);
});
test("toMemoryRetrievalConfig disables injection when memory is off and remaps recent strategy", () => {
assert.deepEqual(
toMemoryRetrievalConfig({
enabled: true,
maxTokens: 0,
retentionDays: 10,
strategy: "recent",
skillsEnabled: false,
}),
{
enabled: false,
maxTokens: 0,
retrievalStrategy: "exact",
autoSummarize: false,
persistAcrossModels: false,
retentionDays: 10,
scope: "apiKey",
}
);
});
});