import { describe, expect, test } from 'vitest'; import { PgTable } from '../../abstractions'; import { PrimitiveColumn } from './primitive-column'; const dummyTable: PgTable = { name: 'some_table', buildFullName: () => 'schema.some_table', } as PgTable; describe('PrimitiveColumn', () => { test('Default constructor', () => { // Arrange & Act const column = new PrimitiveColumn('some_column', 'TEXT', dummyTable); // Assert expect(column.buildExpression()).toBe('some_column TEXT'); }); test('Options with extraParams', () => { // Arrange & Act const column = new PrimitiveColumn('some_column', 'TEXT', dummyTable, { extraParams: 'NOT NULL', }); // Assert expect(column.buildExpression()).toBe('some_column TEXT NOT NULL'); }); test('Options with indexable', () => { // Arrange & Act const column = new PrimitiveColumn('some_column', 'TEXT', dummyTable, { indexable: true, }); // Assert expect(column.buildAdditionalStatements()).toEqual([ 'CREATE INDEX ON schema.some_table (some_column)', ]); }); test('Options with description', () => { // Arrange & Act const column = new PrimitiveColumn('some_column', 'TEXT', dummyTable, { description: 'some description', }); // Assert expect(column.buildSmartTags()).toEqual({ description: 'some description', }); }); test('Setting a display name', () => { // Arrange const column = new PrimitiveColumn('some_column', 'TEXT', dummyTable); // Act column.displayName = 'column'; // Assert expect(column.buildSmartTags()).toEqual({ description: undefined, tags: { name: 'column' }, }); }); });