29 lines
1.1 KiB
TypeScript
29 lines
1.1 KiB
TypeScript
|
|
import assert from "node:assert/strict";
|
||
|
|
import { readFileSync } from "node:fs";
|
||
|
|
import test from "node:test";
|
||
|
|
|
||
|
|
import { mergePollListByKey, nextPollData } from "./pollListStable.ts";
|
||
|
|
|
||
|
|
test("nextPollData reuses previous reference when payload is unchanged", () => {
|
||
|
|
const prev = { a: 1 };
|
||
|
|
assert.equal(nextPollData(prev, { a: 1 }), prev);
|
||
|
|
assert.notEqual(nextPollData(prev, { a: 2 }), prev);
|
||
|
|
});
|
||
|
|
|
||
|
|
test("mergePollListByKey reuses unchanged row references", () => {
|
||
|
|
const prev = [{ id: "1", v: 1 }, { id: "2", v: 2 }];
|
||
|
|
const next = [{ id: "1", v: 1 }, { id: "2", v: 3 }];
|
||
|
|
const merged = mergePollListByKey(prev, next, (item) => item.id);
|
||
|
|
assert.equal(merged[0], prev[0]);
|
||
|
|
assert.deepEqual(merged[1], { id: "2", v: 3 });
|
||
|
|
});
|
||
|
|
|
||
|
|
test("useSystemManager imports nextPollData from domain", () => {
|
||
|
|
const source = readFileSync(
|
||
|
|
new URL("../../application/state/useSystemManager.ts", import.meta.url),
|
||
|
|
"utf8",
|
||
|
|
);
|
||
|
|
assert.match(source, /from ['"]\.\.\/\.\.\/domain\/systemManager\/pollListStable['"]/);
|
||
|
|
assert.doesNotMatch(source, /from ['"].*components\//);
|
||
|
|
});
|