Files
dbx/apps/desktop/src/components/layout/__tests__/ContentArea.dataHeader.spec.ts
T

28 lines
1.6 KiB
TypeScript
Vendored

import { readFileSync } from "node:fs";
import { describe, expect, it } from "vitest";
const contentAreaSource = readFileSync(new URL("../ContentArea.vue", import.meta.url), "utf8");
describe("ContentArea data-mode header", () => {
it("lets name chips flex to available width and only truncate when the row overflows", () => {
const headerIndex = contentAreaSource.indexOf("data-data-header-connection");
expect(headerIndex).toBeGreaterThan(-1);
const chipsBlock = contentAreaSource.slice(headerIndex, contentAreaSource.indexOf('class="ml-auto"', headerIndex));
expect(chipsBlock.length).toBeGreaterThan(0);
// Fixed max-w-48/max-w-56 caps clipped table names even with plenty of free
// space in the header row (#7880); chips must rely on truncate so they only
// clip when the row itself runs out of space. The min-w-12 floor keeps
// scrollWidth reporting real overflow for the measured condensation tiers —
// below the floor the tiers condense the row instead of crushing chips.
expect(chipsBlock).not.toContain("max-w-48");
expect(chipsBlock).not.toContain("max-w-56");
expect(chipsBlock).toContain("inline-flex min-w-12 items-center truncate");
});
it("keeps the full table and schema names reachable via title tooltips", () => {
expect(contentAreaSource).toContain(':title="activeDataTabTableMeta?.tableName || activeTab.title"');
expect(contentAreaSource).toContain("[activeDataTabTableMeta?.schema, databaseDisplayNameForTab(activeTab.connectionId, activeTab.database, t)].filter(Boolean).join('@')");
});
});