import test from 'node:test'; import assert from 'node:assert/strict'; import { REQUIREMENT_TABLE_BADGE_CLASS, REQUIREMENT_TABLE_CLASS, REQUIREMENT_TABLE_COLUMN_WIDTHS, REQUIREMENT_TABLE_CONTAINER_CLASS, REQUIREMENT_TABLE_HEADER_CELL_CLASS, getRequirementTableTextClass, } from './requirement-table-layout'; test('uses fixed table layout without horizontal scrolling for requirement list', () => { assert.match(REQUIREMENT_TABLE_CLASS, /\btable-fixed\b/); assert.doesNotMatch(REQUIREMENT_TABLE_CLASS, /\bmin-w-\[/); assert.doesNotMatch(REQUIREMENT_TABLE_CONTAINER_CLASS, /\boverflow-x-auto\b/); const totalWidth = REQUIREMENT_TABLE_COLUMN_WIDTHS.reduce((sum, width) => sum + width, 0); assert.equal(totalWidth, 100); }); test('reserves enough width for pending-review row actions without horizontal scrolling', () => { const sourceColumnWidth = REQUIREMENT_TABLE_COLUMN_WIDTHS[2]; const creatorColumnWidth = REQUIREMENT_TABLE_COLUMN_WIDTHS[9]; const actionColumnWidth = REQUIREMENT_TABLE_COLUMN_WIDTHS[11]; assert.ok(sourceColumnWidth <= 10); assert.ok(creatorColumnWidth <= 4); assert.ok(actionColumnWidth >= 20); }); test('keeps requirement table headers on one line', () => { assert.match(REQUIREMENT_TABLE_HEADER_CELL_CLASS, /\bwhitespace-nowrap\b/); }); test('keeps requirement table badges on one line', () => { assert.match(REQUIREMENT_TABLE_BADGE_CLASS, /\bwhitespace-nowrap\b/); assert.match(REQUIREMENT_TABLE_BADGE_CLASS, /\bshrink-0\b/); }); test('clips long requirement source project type version and creator cells', () => { for (const column of ['source', 'project', 'type', 'version', 'creator'] as const) { const className = getRequirementTableTextClass(column); assert.match(className, /\btruncate\b/); assert.match(className, /\bblock\b/); assert.match(className, /\bmax-w-\[/); } });