dbx/packages/app-tests/sidebarTreeItemLayout.test.ts

46 lines
2.3 KiB
TypeScript

import { strict as assert } from "node:assert";
import { test } from "vitest";
import { canTreeNodeExpand, canTreeNodeShowExpander, treeItemPaddingLeft, usesFullWidthTreeLabel } from "../../apps/desktop/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);
assert.equal(canTreeNodeExpand("user-admin"), 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);
});
test("usesFullWidthTreeLabel only expands object names when horizontal scroll is enabled", () => {
assert.equal(usesFullWidthTreeLabel("table", true), true);
assert.equal(usesFullWidthTreeLabel("view", true), true);
assert.equal(usesFullWidthTreeLabel("mongo-collection", true), true);
assert.equal(usesFullWidthTreeLabel("table", false), false);
assert.equal(usesFullWidthTreeLabel("connection", true), false);
assert.equal(usesFullWidthTreeLabel("schema", true), false);
assert.equal(usesFullWidthTreeLabel("column", true), false);
});