dbx/tests/sidebarTreeItemLayout.test.ts

34 lines
1.6 KiB
TypeScript

import { strict as assert } from "node:assert";
import test from "node:test";
import { canTreeNodeExpand, canTreeNodeShowExpander, treeItemPaddingLeft } from "../src/lib/sidebarTreeItemLayout.ts";
test("treeItemPaddingLeft converts tree depth to sidebar indentation", () => {
assert.equal(treeItemPaddingLeft(0), "8px");
assert.equal(treeItemPaddingLeft(1), "24px");
assert.equal(treeItemPaddingLeft(2), "40px");
});
test("canTreeNodeExpand only returns true for expandable sidebar node types", () => {
assert.equal(canTreeNodeExpand("connection"), true);
assert.equal(canTreeNodeExpand("database"), true);
assert.equal(canTreeNodeExpand("schema"), true);
assert.equal(canTreeNodeExpand("table"), true);
assert.equal(canTreeNodeExpand("view"), true);
assert.equal(canTreeNodeExpand("saved-sql-root"), true);
assert.equal(canTreeNodeExpand("saved-sql-folder"), true);
assert.equal(canTreeNodeExpand("saved-sql-file"), false);
assert.equal(canTreeNodeExpand("object-browser"), false);
assert.equal(canTreeNodeExpand("column"), false);
assert.equal(canTreeNodeExpand("index"), false);
assert.equal(canTreeNodeExpand("redis-db"), false);
assert.equal(canTreeNodeExpand("mongo-collection"), false);
});
test("canTreeNodeShowExpander hides empty saved SQL containers", () => {
assert.equal(canTreeNodeShowExpander({ type: "saved-sql-root", childCount: 0 }), false);
assert.equal(canTreeNodeShowExpander({ type: "saved-sql-folder", childCount: 0 }), false);
assert.equal(canTreeNodeShowExpander({ type: "saved-sql-root", childCount: 1 }), true);
assert.equal(canTreeNodeShowExpander({ type: "saved-sql-folder", childCount: 1 }), true);
});