Skip to content

Commit e4be803

Browse files
committed
feat(tests): adding tests for relations
1 parent d956723 commit e4be803

File tree

11 files changed

+6992
-446
lines changed

11 files changed

+6992
-446
lines changed

__tests__/fixtures/datamodels.ts

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
export const datamodelOneToOne = /* Prisma */ `
2+
model User {
3+
id Int @id @default(autoincrement())
4+
name String
5+
profile Profile?
6+
}
7+
model Profile {
8+
id Int @id @default(autoincrement())
9+
name String
10+
user User @relation(fields: [userId], references: [id])
11+
userId Int
12+
}
13+
`;
14+
15+
export const datamodelManyToOne = /* Prisma */ `
16+
model User {
17+
id Int @id @default(autoincrement())
18+
name String
19+
posts Post[]
20+
}
21+
model Post {
22+
id Int @id @default(autoincrement())
23+
name String
24+
author User @relation(fields: [authorId], references: [id])
25+
authorId Int
26+
}
27+
`;

__tests__/relations.test.ts

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { generateDMMF } from './utils/generateDMMF';
2+
import { datamodelOneToOne, datamodelManyToOne } from './fixtures/datamodels';
3+
import { generateRelations } from '../src/generator/relations';
4+
5+
describe('Relations', () => {
6+
test('generating one-to-one relationship', async () => {
7+
const dmmf = await generateDMMF(datamodelOneToOne);
8+
9+
const expected = 'Ref: Profile.userId - User.id';
10+
11+
const relations = generateRelations(dmmf.datamodel.models);
12+
expect(relations[0]).toMatch(expected);
13+
});
14+
15+
test('generating many-to-one relationship', async () => {
16+
const dmmf = await generateDMMF(datamodelManyToOne);
17+
18+
const expected = 'Ref: Post.authorId > User.id';
19+
20+
const relations = generateRelations(dmmf.datamodel.models);
21+
expect(relations[0]).toMatch(expected);
22+
});
23+
});

__tests__/utils/generateDMMF.ts

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { getDMMF } from '@prisma/sdk';
2+
import { DMMF } from '@prisma/generator-helper';
3+
4+
export function generateDMMF(datamodel: string): Promise<DMMF.Document> {
5+
return getDMMF({ datamodel });
6+
}

jest.config.js

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
module.exports = {
2+
preset: 'ts-jest',
3+
testEnvironment: 'node',
4+
testPathIgnorePatterns: [
5+
'<rootDir>/__tests__/fixtures/',
6+
'<rootDir>/__tests__/utils/',
7+
],
8+
};

0 commit comments

Comments
 (0)