import transformDMMF from '../generator/transformDMMF'; //@ts-ignore import { getDMMF } from '@prisma/internals'; describe('transformDMMF', () => { it('show relation fields when includeRelationFields = true', async () => { const datamodelString = /* Prisma */ ` model User { id String @default(cuid()) @id name String otherField Int posts Post[] } model Post { id String @id @default(cuid()) title String? userId String user User @relation(fields:[userId], references:[id]) } `; const dmmf = await getDMMF({ datamodel: datamodelString }); const transformedDmmf = transformDMMF(dmmf, { includeRelationFields: true, }); expect(transformedDmmf).toMatchObject({ datamodel: { models: [ { name: 'User', fields: [ { name: 'id' }, { name: 'name' }, { name: 'otherField' }, { name: 'posts' }, ], }, { name: 'Post', fields: [ { name: 'id' }, { name: 'title' }, { name: 'userId' }, { name: 'user' }, ], }, ], }, }); }); it('hide relation fields when includeRelationFields = false', async () => { const datamodelString = /* Prisma */ ` model User { id String @default(cuid()) @id name String otherField Int posts Post[] } model Post { id String @id @default(cuid()) title String? userId String user User @relation(fields:[userId], references:[id]) } `; const dmmf = await getDMMF({ datamodel: datamodelString }); const transformedDmmf = transformDMMF(dmmf, { includeRelationFields: false, }); expect(transformedDmmf).toMatchObject({ datamodel: { models: [ { name: 'User', fields: [{ name: 'id' }, { name: 'name' }, { name: 'otherField' }], }, { name: 'Post', fields: [{ name: 'id' }, { name: 'title' }, { name: 'userId' }], }, ], }, }); }); });