zenstack/packages/cli/test/prisma-schema-gen.test.ts
sanny-io 76febc90d4
Some checks failed
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
fix: invalid prisma schema with format args (#2677)
2026-05-22 08:33:41 -07:00

49 lines
No EOL
1.9 KiB
TypeScript

import { loadSchema } from '@zenstackhq/testtools';
import { describe, expect, it } from 'vitest';
import { PrismaSchemaGenerator } from '@zenstackhq/sdk';
describe('Prisma schema generation tests', () => {
it('strips format args from id functions', async () => {
const model = await loadSchema(`
model User {
id Int @id @default(autoincrement())
cuid String @default(cuid())
cuid1 String @default(cuid(1, 'cuid1_%s'))
cuid2 String @default(cuid(2, 'cuid2_%s'))
uuid String @default(uuid())
uuid4 String @default(uuid(4, 'uuid4_%s'))
uuid7 String @default(uuid(7, 'uuid7_%s'))
ulid String @default(ulid())
ulid1 String @default(ulid('ulid_%s'))
nanoid String @default(nanoid())
nanoid12 String @default(nanoid(12, 'nanoid12_%s'))
}
`);
const generator = new PrismaSchemaGenerator(model);
const prismaSchemaText = await generator.generate();
expect(prismaSchemaText.includes('cuid()')).toBe(true);
expect(prismaSchemaText.includes('cuid(1)')).toBe(true);
expect(prismaSchemaText.includes('cuid(2)')).toBe(true);
expect(prismaSchemaText.includes('cuid1_%s')).toBe(false);
expect(prismaSchemaText.includes('cuid2_%s')).toBe(false);
expect(prismaSchemaText.includes('uuid()')).toBe(true);
expect(prismaSchemaText.includes('uuid(4)')).toBe(true);
expect(prismaSchemaText.includes('uuid(7)')).toBe(true);
expect(prismaSchemaText.includes('uuid4_%s')).toBe(false);
expect(prismaSchemaText.includes('uuid7_%s')).toBe(false);
expect(prismaSchemaText.match(/ulid\(\)/g)).toHaveLength(2);
expect(prismaSchemaText.includes('ulid_%s')).toBe(false);
expect(prismaSchemaText.includes('nanoid()')).toBe(true);
expect(prismaSchemaText.includes('nanoid(12)')).toBe(true);
expect(prismaSchemaText.includes('nanoid12_%s')).toBe(false);
});
});