Files
MyGoNavi/frontend/src/components/tableDesignerIndexSql.test.ts
Syngnat 1dd1cb9e44 🐛 fix(sqlserver): 修复表 DDL 与索引创建语句生成
- DDL:为 SQL Server 表结构补充 CREATE TABLE fallback 生成
- 索引:在已有索引选择和新增索引弹窗中展示 CREATE INDEX 语句
- 测试:补充 SQL Server DDL fallback 与索引 SQL 预览回归测试
2026-05-16 08:46:51 +08:00

47 lines
1.4 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { buildIndexCreateSqlPreview } from './tableDesignerIndexSql';
describe('tableDesignerIndexSql', () => {
it('builds SQL Server nonclustered index create SQL', () => {
const result = buildIndexCreateSqlPreview({
dbType: 'sqlserver',
tableRef: '[dbo].[Users]',
name: 'IX_Users_DisplayName',
columnNames: ['display_name'],
kind: 'NORMAL',
indexType: 'NONCLUSTERED',
});
expect(result.sql).toBe('CREATE NONCLUSTERED INDEX [IX_Users_DisplayName] ON [dbo].[Users] ([display_name]);');
});
it('builds SQL Server unique clustered index create SQL', () => {
const result = buildIndexCreateSqlPreview({
dbType: 'mssql',
tableRef: '[dbo].[Users]',
name: 'IX_Users_Email',
columnNames: ['email'],
kind: 'UNIQUE',
indexType: 'CLUSTERED',
});
expect(result.sql).toBe('CREATE UNIQUE CLUSTERED INDEX [IX_Users_Email] ON [dbo].[Users] ([email]);');
});
it('returns a validation message before an index name is available', () => {
const result = buildIndexCreateSqlPreview({
dbType: 'sqlserver',
tableRef: '[dbo].[Users]',
name: '',
columnNames: ['display_name'],
kind: 'NORMAL',
indexType: 'NONCLUSTERED',
});
expect(result.sql).toBeNull();
expect(result.severity).toBe('error');
expect(result.message).toContain('请输入索引名');
});
});