This commit is contained in:
2026-07-12 21:26:08 +08:00
commit 9dd41afd48
502 changed files with 129901 additions and 0 deletions
@@ -0,0 +1,64 @@
import { describe, it } from "node:test";
import assert from "node:assert/strict";
import {
GRAPH_TOOLBAR_PANEL_KEY,
nextToolbarPanelState,
readToolbarPanelState,
shouldBlankClickCloseToolbar,
toolbarPanelStateAfterBlankClick,
writeToolbarPanelState
} from "../src/render/toolbar";
describe("graph toolbar state", () => {
it("defaults to a closed toolbar panel", () => {
assert.equal(readToolbarPanelState(memoryStorage()), "closed");
});
it("persists open and closed panel state", () => {
const storage = memoryStorage();
writeToolbarPanelState(storage, "filters");
assert.equal(storage.getItem(GRAPH_TOOLBAR_PANEL_KEY), "filters");
assert.equal(readToolbarPanelState(storage), "filters");
writeToolbarPanelState(storage, "closed");
assert.equal(readToolbarPanelState(storage), "closed");
});
it("toggles the same panel closed and switches to another panel", () => {
assert.equal(nextToolbarPanelState("closed", "filters"), "filters");
assert.equal(nextToolbarPanelState("filters", "filters"), "closed");
assert.equal(nextToolbarPanelState("filters", "legend"), "legend");
});
it("lets blank canvas clicks close an open popover before graph gestures run", () => {
assert.equal(shouldBlankClickCloseToolbar("filters"), true);
assert.equal(toolbarPanelStateAfterBlankClick("filters"), "closed");
assert.equal(shouldBlankClickCloseToolbar("closed"), false);
assert.equal(toolbarPanelStateAfterBlankClick("closed"), "closed");
});
});
function memoryStorage(): Storage {
const values = new Map<string, string>();
return {
get length() {
return values.size;
},
clear() {
values.clear();
},
getItem(key: string) {
return values.get(key) ?? null;
},
key(index: number) {
return Array.from(values.keys())[index] ?? null;
},
removeItem(key: string) {
values.delete(key);
},
setItem(key: string, value: string) {
values.set(key, value);
}
};
}