Skip to content

Commit

Permalink
test: ensure the emulated referential action 'NoAction' is not valid …
Browse files Browse the repository at this point in the history
…for postgres and sqlite
  • Loading branch information
jkomyno committed Oct 19, 2022
2 parents c1afd29 + d94363f commit 53a764c
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 0 deletions.
48 changes: 48 additions & 0 deletions packages/migrate/src/__tests__/DbPush.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,54 @@ const describeIf = (condition: boolean) => (condition ? describe : describe.skip
const ctx = jestContext.new().add(jestConsoleContext()).assemble()

describeIf(process.platform !== 'win32')('push', () => {
it('fails with relationMode = "prisma" + NoAction referential action on Postgres', async () => {
ctx.fixture('referential-actions/no-action/relationMode-prisma')

const result = DbPush.new().parse(['--schema', './prisma/postgres.prisma'])
await expect(result).rejects.toThrowErrorMatchingInlineSnapshot(`
P1012
error: Error validating: Invalid referential action: \`NoAction\`. Allowed values: (\`Cascade\`, \`Restrict\`, \`SetNull\`). \`NoAction\` is not implemented for Postgres when using \`relationMode = "prisma"\`, you could try using \`Restrict\` instead. Learn more at https://pris.ly/d/relationMode
--> schema.prisma:21
|
20 | id String @id @default(cuid())
21 | user SomeUser @relation(fields: [userId], references: [id], onUpdate: NoAction)
|
error: Error validating: Invalid referential action: \`NoAction\`. Allowed values: (\`Cascade\`, \`Restrict\`, \`SetNull\`). \`NoAction\` is not implemented for Postgres when using \`relationMode = "prisma"\`, you could try using \`Restrict\` instead. Learn more at https://pris.ly/d/relationMode
--> schema.prisma:28
|
27 | id String @id @default(cuid())
28 | user SomeUser @relation(fields: [userId], references: [id], onDelete: NoAction)
|
`)
})

it('fails with relationMode = "prisma" + NoAction referential action on sqlite', async () => {
ctx.fixture('referential-actions/no-action/relationMode-prisma')

const result = DbPush.new().parse(['--schema', './prisma/sqlite.prisma'])
await expect(result).rejects.toThrowErrorMatchingInlineSnapshot(`
P1012
error: Error validating: Invalid referential action: \`NoAction\`. Allowed values: (\`Cascade\`, \`Restrict\`, \`SetNull\`). \`NoAction\` is not implemented for sqlite when using \`relationMode = "prisma"\`, you could try using \`Restrict\` instead. Learn more at https://pris.ly/d/relationMode
--> schema.prisma:20
|
19 | id String @id @default(cuid())
20 | user SomeUser @relation(fields: [userId], references: [id], onUpdate: NoAction, onDelete: NoAction)
|
error: Error validating: Invalid referential action: \`NoAction\`. Allowed values: (\`Cascade\`, \`Restrict\`, \`SetNull\`). \`NoAction\` is not implemented for sqlite when using \`relationMode = "prisma"\`, you could try using \`Restrict\` instead. Learn more at https://pris.ly/d/relationMode
--> schema.prisma:20
|
19 | id String @id @default(cuid())
20 | user SomeUser @relation(fields: [userId], references: [id], onUpdate: NoAction, onDelete: NoAction)
|
`)
})

it('--preview-feature flag is not required anymore', async () => {
ctx.fixture('empty')

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
generator client {
provider = "prisma-client-js"
previewFeatures = ["referentialIntegrity"]
}

datasource db {
provider = "postgres"
url = env("TEST_POSTGRES_URI")
relationMode = "prisma"
}

model SomeUser {
id String @id @default(cuid())
profileUpdate ProfileUpdateNoAction?
profileDelete ProfileDeleteNoAction?
enabled Boolean?
}

model ProfileUpdateNoAction {
id String @id @default(cuid())
user SomeUser @relation(fields: [userId], references: [id], onUpdate: NoAction)
userId String @unique
enabled Boolean?
}

model ProfileDeleteNoAction {
id String @id @default(cuid())
user SomeUser @relation(fields: [userId], references: [id], onDelete: NoAction)
userId String @unique
enabled Boolean?
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
generator client {
provider = "prisma-client-js"
previewFeatures = ["referentialIntegrity"]
}

datasource db {
provider = "sqlite"
url = "file:./db.dev"
relationMode = "prisma"
}

model SomeUser {
id String @id @default(cuid())
profileNoAction ProfileNoAction?
enabled Boolean?
}

model ProfileNoAction {
id String @id @default(cuid())
user SomeUser @relation(fields: [userId], references: [id], onUpdate: NoAction, onDelete: NoAction)
userId String @unique
enabled Boolean?
}

0 comments on commit 53a764c

Please sign in to comment.