Skip to content

Commit 0ee16cc

Browse files
committed
update test
1 parent e7f6b54 commit 0ee16cc

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
import { loadSchema } from '@zenstackhq/testtools';
2+
3+
describe('issue 1859', () => {
4+
it('extend enhanced client', async () => {
5+
const { enhance, prisma } = await loadSchema(
6+
`
7+
model Post {
8+
id Int @id
9+
title String
10+
published Boolean
11+
12+
@@allow('create', true)
13+
@@allow('read', published)
14+
}
15+
`
16+
);
17+
18+
await prisma.post.create({ data: { id: 1, title: 'post1', published: true } });
19+
await prisma.post.create({ data: { id: 2, title: 'post2', published: false } });
20+
21+
const db = enhance();
22+
await expect(db.post.findMany()).resolves.toHaveLength(1);
23+
24+
const extended = db.$extends({
25+
model: {
26+
post: {
27+
findManyListView: async (args: any) => {
28+
return { view: true, data: await db.post.findMany(args) };
29+
},
30+
},
31+
},
32+
});
33+
34+
await expect(extended.post.findManyListView()).resolves.toMatchObject({
35+
view: true,
36+
data: [{ id: 1, title: 'post1', published: true }],
37+
});
38+
await expect(extended.post.findMany()).resolves.toHaveLength(1);
39+
});
40+
41+
it('enhance extended client', async () => {
42+
const { enhanceRaw, prisma, prismaModule } = await loadSchema(
43+
`
44+
model Post {
45+
id Int @id
46+
title String
47+
published Boolean
48+
49+
@@allow('create', true)
50+
@@allow('read', published)
51+
}
52+
`
53+
);
54+
55+
await prisma.post.create({ data: { id: 1, title: 'post1', published: true } });
56+
await prisma.post.create({ data: { id: 2, title: 'post2', published: false } });
57+
58+
const ext = prismaModule.defineExtension((_prisma: any) => {
59+
return _prisma.$extends({
60+
model: {
61+
post: {
62+
findManyListView: async (args: any) => {
63+
return { view: true, data: await prisma.post.findMany(args) };
64+
},
65+
},
66+
},
67+
});
68+
});
69+
70+
await expect(prisma.$extends(ext).post.findMany()).resolves.toHaveLength(2);
71+
await expect(prisma.$extends(ext).post.findManyListView()).resolves.toMatchObject({
72+
view: true,
73+
data: [
74+
{ id: 1, title: 'post1', published: true },
75+
{ id: 2, title: 'post2', published: false },
76+
],
77+
});
78+
79+
const enhanced = enhanceRaw(prisma.$extends(ext));
80+
await expect(enhanced.post.findMany()).resolves.toHaveLength(1);
81+
// findManyListView internally uses the un-enhanced client
82+
await expect(enhanced.post.findManyListView()).resolves.toMatchObject({
83+
view: true,
84+
data: [
85+
{ id: 1, title: 'post1', published: true },
86+
{ id: 2, title: 'post2', published: false },
87+
],
88+
});
89+
});
90+
});

0 commit comments

Comments
 (0)