Files
2026-07-13 13:39:12 +08:00

230 lines
9.5 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
import {
parseConfiguredOnlyPreference,
parseProviderDisplayModePreference,
readConfiguredOnlyPreference,
writeConfiguredOnlyPreference,
readProviderDisplayModePreference,
shouldSyncProviderDisplayMode,
writeProviderDisplayModePreference,
SHOW_CONFIGURED_ONLY_STORAGE_KEY,
PROVIDER_DISPLAY_MODE_STORAGE_KEY,
} from "../../../src/app/(dashboard)/dashboard/providers/providerPageStorage";
// ---------------------------------------------------------------------------
// Helpers: in-memory storage mock
// ---------------------------------------------------------------------------
function makeMockStorage(): {
store: Map<string, string>;
getItem(key: string): string | null;
setItem(key: string, value: string): void;
removeItem(key: string): void;
} {
const store = new Map<string, string>();
return {
store,
getItem(key: string) {
return store.get(key) ?? null;
},
setItem(key: string, value: string) {
store.set(key, value);
},
removeItem(key: string) {
store.delete(key);
},
};
}
// ---------------------------------------------------------------------------
// parseConfiguredOnlyPreference
// ---------------------------------------------------------------------------
test("parseConfiguredOnlyPreference returns true for 'true'", () => {
assert.equal(parseConfiguredOnlyPreference("true"), true);
});
test("parseConfiguredOnlyPreference returns false for 'false'", () => {
assert.equal(parseConfiguredOnlyPreference("false"), false);
});
test("parseConfiguredOnlyPreference returns false for null", () => {
assert.equal(parseConfiguredOnlyPreference(null), false);
});
test("parseConfiguredOnlyPreference returns false for undefined", () => {
assert.equal(parseConfiguredOnlyPreference(undefined), false);
});
test("parseConfiguredOnlyPreference returns false for empty string", () => {
assert.equal(parseConfiguredOnlyPreference(""), false);
});
// ---------------------------------------------------------------------------
// parseProviderDisplayModePreference
// ---------------------------------------------------------------------------
test("parseProviderDisplayModePreference returns 'all' for 'all'", () => {
assert.equal(parseProviderDisplayModePreference("all"), "all");
});
test("parseProviderDisplayModePreference returns 'configured' for 'configured'", () => {
assert.equal(parseProviderDisplayModePreference("configured"), "configured");
});
test("parseProviderDisplayModePreference returns 'compact' for 'compact'", () => {
assert.equal(parseProviderDisplayModePreference("compact"), "compact");
});
test("parseProviderDisplayModePreference returns null for invalid value", () => {
assert.equal(parseProviderDisplayModePreference("unknown"), null);
});
test("parseProviderDisplayModePreference returns null for null", () => {
assert.equal(parseProviderDisplayModePreference(null), null);
});
test("parseProviderDisplayModePreference returns null for undefined", () => {
assert.equal(parseProviderDisplayModePreference(undefined), null);
});
// ---------------------------------------------------------------------------
// readConfiguredOnlyPreference
// ---------------------------------------------------------------------------
test("readConfiguredOnlyPreference returns false when storage is null", () => {
assert.equal(readConfiguredOnlyPreference(null), false);
});
test("readConfiguredOnlyPreference reads value from storage", () => {
const storage = makeMockStorage();
storage.setItem(SHOW_CONFIGURED_ONLY_STORAGE_KEY, "true");
assert.equal(readConfiguredOnlyPreference(storage), true);
});
test("readConfiguredOnlyPreference returns false when key is missing", () => {
const storage = makeMockStorage();
assert.equal(readConfiguredOnlyPreference(storage), false);
});
// ---------------------------------------------------------------------------
// writeConfiguredOnlyPreference
// ---------------------------------------------------------------------------
test("writeConfiguredOnlyPreference does nothing when storage is null", () => {
// Should not throw
writeConfiguredOnlyPreference(true, null);
});
test("writeConfiguredOnlyPreference sets key to 'true' when enabled", () => {
const storage = makeMockStorage();
writeConfiguredOnlyPreference(true, storage);
assert.equal(storage.getItem(SHOW_CONFIGURED_ONLY_STORAGE_KEY), "true");
});
test("writeConfiguredOnlyPreference removes key when disabled", () => {
const storage = makeMockStorage();
storage.setItem(SHOW_CONFIGURED_ONLY_STORAGE_KEY, "true");
writeConfiguredOnlyPreference(false, storage);
assert.equal(storage.getItem(SHOW_CONFIGURED_ONLY_STORAGE_KEY), null);
});
// ---------------------------------------------------------------------------
// readProviderDisplayModePreference (the main function used by the page)
// ---------------------------------------------------------------------------
test("readProviderDisplayModePreference returns 'all' when storage is null", () => {
assert.equal(readProviderDisplayModePreference(null), "all");
});
test("readProviderDisplayModePreference reads stored display mode", () => {
const storage = makeMockStorage();
storage.setItem(PROVIDER_DISPLAY_MODE_STORAGE_KEY, "configured");
assert.equal(readProviderDisplayModePreference(storage), "configured");
});
test("readProviderDisplayModePreference reads 'compact' mode", () => {
const storage = makeMockStorage();
storage.setItem(PROVIDER_DISPLAY_MODE_STORAGE_KEY, "compact");
assert.equal(readProviderDisplayModePreference(storage), "compact");
});
test("readProviderDisplayModePreference returns 'all' when no preference stored", () => {
const storage = makeMockStorage();
assert.equal(readProviderDisplayModePreference(storage), "all");
});
test("readProviderDisplayModePreference migrates from old configured-only key", () => {
const storage = makeMockStorage();
// Old key set but new key missing
storage.setItem(SHOW_CONFIGURED_ONLY_STORAGE_KEY, "true");
assert.equal(storage.getItem(PROVIDER_DISPLAY_MODE_STORAGE_KEY), null);
// Should migrate: return "configured" AND write the new key
const result = readProviderDisplayModePreference(storage);
assert.equal(result, "configured");
assert.equal(storage.getItem(PROVIDER_DISPLAY_MODE_STORAGE_KEY), "configured");
assert.equal(storage.getItem(SHOW_CONFIGURED_ONLY_STORAGE_KEY), null);
});
test("readProviderDisplayModePreference prefers new display mode key over old key", () => {
const storage = makeMockStorage();
storage.setItem(PROVIDER_DISPLAY_MODE_STORAGE_KEY, "compact");
storage.setItem(SHOW_CONFIGURED_ONLY_STORAGE_KEY, "true");
// New key takes precedence — no migration
assert.equal(readProviderDisplayModePreference(storage), "compact");
assert.equal(storage.getItem(PROVIDER_DISPLAY_MODE_STORAGE_KEY), "compact");
assert.equal(storage.getItem(SHOW_CONFIGURED_ONLY_STORAGE_KEY), "true");
});
// ---------------------------------------------------------------------------
// writeProviderDisplayModePreference
// ---------------------------------------------------------------------------
test("writeProviderDisplayModePreference does nothing when storage is null", () => {
writeProviderDisplayModePreference("configured", null);
});
test("writeProviderDisplayModePreference stores 'configured' and cleans old key", () => {
const storage = makeMockStorage();
storage.setItem(SHOW_CONFIGURED_ONLY_STORAGE_KEY, "true");
writeProviderDisplayModePreference("configured", storage);
assert.equal(storage.getItem(PROVIDER_DISPLAY_MODE_STORAGE_KEY), "configured");
assert.equal(storage.getItem(SHOW_CONFIGURED_ONLY_STORAGE_KEY), null);
});
test("writeProviderDisplayModePreference stores 'compact' and cleans old key", () => {
const storage = makeMockStorage();
writeProviderDisplayModePreference("compact", storage);
assert.equal(storage.getItem(PROVIDER_DISPLAY_MODE_STORAGE_KEY), "compact");
assert.equal(storage.getItem(SHOW_CONFIGURED_ONLY_STORAGE_KEY), null);
});
test("writeProviderDisplayModePreference with 'all' removes all keys", () => {
const storage = makeMockStorage();
storage.setItem(PROVIDER_DISPLAY_MODE_STORAGE_KEY, "configured");
storage.setItem(SHOW_CONFIGURED_ONLY_STORAGE_KEY, "true");
writeProviderDisplayModePreference("all", storage);
assert.equal(storage.getItem(PROVIDER_DISPLAY_MODE_STORAGE_KEY), null);
assert.equal(storage.getItem(SHOW_CONFIGURED_ONLY_STORAGE_KEY), null);
});
// ---------------------------------------------------------------------------
// shouldSyncProviderDisplayMode — race guard (#5510)
// The persistence effects must stay inert while the connections fetch is still
// loading; otherwise an empty connections list coerces a saved "configured"
// preference to "all" and the filter is lost across reloads.
// ---------------------------------------------------------------------------
test("shouldSyncProviderDisplayMode blocks the effects while loading (#5510 race guard)", () => {
// The bug: without the loading check, the effect runs against connections.length === 0
// mid-fetch and overwrites the saved preference. This is the failing-without-fix case.
assert.equal(shouldSyncProviderDisplayMode(true, true), false);
});
test("shouldSyncProviderDisplayMode stays inert until the stored preference is read", () => {
assert.equal(shouldSyncProviderDisplayMode(false, false), false);
assert.equal(shouldSyncProviderDisplayMode(false, true), false);
});
test("shouldSyncProviderDisplayMode allows persistence once ready and settled", () => {
assert.equal(shouldSyncProviderDisplayMode(true, false), true);
});