Skip to content

Commit 3d7678a

Browse files
authored
fix(zod): don't include @@Validate rules when generating schema for validating update input (#1625)
1 parent bd8c36c commit 3d7678a

File tree

3 files changed

+34
-6
lines changed

3 files changed

+34
-6
lines changed

packages/schema/src/plugins/zod/generator.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -464,9 +464,6 @@ export const ${upperCaseFirst(model.name)}PrismaCreateSchema = ${prismaCreateSch
464464
.join(',\n')}
465465
})`;
466466
prismaUpdateSchema = this.makePartial(prismaUpdateSchema);
467-
if (refineFuncName) {
468-
prismaUpdateSchema = `${refineFuncName}(${prismaUpdateSchema})`;
469-
}
470467
writer.writeLine(
471468
`
472469
/**

tests/integration/tests/enhancements/with-policy/field-validation.test.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -646,8 +646,9 @@ describe('Model-level validation', () => {
646646

647647
const db = enhance();
648648

649-
await expect(db.model.create({ data: { x: 2, y: 1 } })).toResolveTruthy();
650-
await expect(db.model.create({ data: { x: 1, y: 2 } })).toBeRejectedByPolicy();
649+
await expect(db.model.create({ data: { id: 1, x: 2, y: 1 } })).toResolveTruthy();
650+
await expect(db.model.update({ where: { id: 1 }, data: { y: 3 } })).toBeRejectedByPolicy();
651+
await expect(db.model.update({ where: { id: 1 }, data: { x: 3 } })).toResolveTruthy();
651652
});
652653

653654
it('int optionality', async () => {
@@ -948,7 +949,7 @@ describe('Model-level validation', () => {
948949
await expect(db.model.create({ data: { id: 1, x: 0, y: 0 } })).toBeRejectedByPolicy();
949950
await expect(db.model.create({ data: { id: 1, x: 1, y: 0 } })).toResolveTruthy();
950951

951-
await expect(db.model.update({ where: { id: 1 }, data: {} })).toBeRejectedByPolicy();
952+
await expect(db.model.update({ where: { id: 1 }, data: {} })).toResolveTruthy();
952953
await expect(db.model.update({ where: { id: 1 }, data: { y: 2 } })).toBeRejectedByPolicy();
953954
await expect(db.model.update({ where: { id: 1 }, data: { y: 1 } })).toResolveTruthy();
954955
await expect(db.model.update({ where: { id: 1 }, data: { x: 2, y: 1 } })).toResolveTruthy();
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { loadSchema } from '@zenstackhq/testtools';
2+
3+
describe('issue 1563', () => {
4+
it('regression', async () => {
5+
const { enhance } = await loadSchema(
6+
`
7+
model ModelA {
8+
id String @id @default(cuid())
9+
ref ModelB[]
10+
}
11+
12+
model ModelB {
13+
id String @id @default(cuid())
14+
ref ModelA? @relation(fields: [refId], references: [id])
15+
refId String?
16+
17+
@@validate(refId != null, "refId must be set")
18+
}
19+
`,
20+
{ enhancements: ['validation'] }
21+
);
22+
23+
const db = enhance();
24+
25+
const a = await db.modelA.create({ data: {} });
26+
const b = await db.modelB.create({ data: { refId: a.id } });
27+
28+
await expect(db.modelB.update({ where: { id: b.id }, data: { refId: a.id } })).toResolveTruthy();
29+
});
30+
});

0 commit comments

Comments
 (0)