import { readFileSync } from 'node:fs'; import { describe, expect, it } from 'vitest'; import type { DbStructureTable } from '../../src/domain/db-structure'; import { summarizeDbStructure } from '../../src/features/db-structure/DbStructurePanel'; const component = readFileSync(new URL('../../src/features/db-structure/DbStructurePanel.tsx', import.meta.url), 'utf8'); const styles = readFileSync(new URL('../../src/styles/datahub.css', import.meta.url), 'utf8'); describe('DB Structure information design', () => { it('summarizes tables, columns, relationships and available row estimates', () => { const tables: DbStructureTable[] = [ { name: 'imports', layer: 'import', approximateRowCount: 12, columns: [{ name: 'id', dataType: 'uuid', nullable: false }, { name: 'source', dataType: 'text', nullable: true }], foreignKeys: [] }, { name: 'findings', layer: 'canonical', approximateRowCount: null, columns: [{ name: 'import_id', dataType: 'uuid', nullable: false }], foreignKeys: [{ column: 'import_id', referencedTable: 'imports', referencedColumn: 'id' }] } ]; expect(summarizeDbStructure(tables)).toEqual({ tables: 2, columns: 3, relationships: 1, approximateRows: 12, countedTables: 1 }); }); it('keeps schema actions and the data flow while omitting the removed introductions', () => { expect(component).not.toContain('className="db-structure-intro"'); expect(component).not.toContain('className="db-structure-intro-copy"'); expect(component).not.toContain('Database dictionary'); expect(component).not.toContain('Relational schema'); expect(component).not.toContain('Follow a scanner report or a GPO backup'); expect(component).toContain('className="db-structure-intro-actions"'); expect(component).toContain('Refresh schema'); expect(component).toContain('