Skip to content

Commit

Permalink
test(client): prototype referential integrity tests
Browse files Browse the repository at this point in the history
Related: #10806

Test Suites: 1 failed, 1 total
Tests:       3 failed, 45 passed, 48 total
Snapshots:   0 total
Time:        9.838 s
  • Loading branch information
Jolg42 committed Jul 8, 2022
1 parent 9a3435d commit 47b552b
Show file tree
Hide file tree
Showing 4 changed files with 433 additions and 0 deletions.
4 changes: 4 additions & 0 deletions packages/client/tests/functional/_utils/getTestSuiteInfo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ export function getTestSuiteFullName(suiteMeta: TestSuiteMeta, suiteConfig: Test
if (suiteConfig['previewFeatures']) {
name += `${suiteConfig['previewFeatures']}`
}

if (suiteConfig['referentialIntegrity']) {
name += `=${suiteConfig['referentialIntegrity']}`
}
name += `)`

// replace illegal chars with empty string
Expand Down
47 changes: 47 additions & 0 deletions packages/client/tests/functional/referential-integrity/_matrix.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import { defineMatrix } from '../_utils/defineMatrix'

const RI = process.env.RI
if (RI !== 'prisma' && RI !== 'foreignKeys') {
throw new Error(`RI must be either "prisma" or "foreignKeys" but was "${RI}"`)
}
const referentialIntegrity: 'prisma' | 'foreignKeys' | '' = RI || ''

export default defineMatrix(() => [
[
{
provider: 'postgresql',
id: 'String @id',
referentialIntegrity,
},
{
provider: 'sqlite',
id: 'String @id',
referentialIntegrity,
},
{
provider: 'mysql',
id: 'String @id',
referentialIntegrity,
},
{
provider: 'sqlserver',
id: 'String @id',
referentialIntegrity,
},
{
provider: 'cockroachdb',
id: 'String @id',
referentialIntegrity,
},
{
provider: 'mongodb',
id: 'String @id @map("_id") @db.ObjectId',
referentialIntegrity: 'default',
},
],
[
{
previewFeatures: '"referentialIntegrity"',
},
],
])
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import testMatrix from '../_matrix'

export default testMatrix.setupSchema(({ provider, previewFeatures, referentialIntegrity, id }) => {
let referentialIntegrityLine = ''

switch (referentialIntegrity) {
case 'prisma':
case 'foreignKeys':
referentialIntegrityLine = `referentialIntegrity = "${referentialIntegrity}"`
break
default:
break
}

return /* Prisma */ `
generator client {
provider = "prisma-client-js"
previewFeatures = [${previewFeatures}]
}
datasource db {
provider = "${provider}"
url = env("DATABASE_URI_${provider}")
${referentialIntegrityLine}
}
model UserDefault {
id ${id}
profile ProfileDefault?
}
model ProfileDefault {
id ${id}
user UserDefault @relation(fields: [userId], references: [id])
userId String @unique
}
model UserCascade {
id ${id}
profile ProfileCascade?
}
model ProfileCascade {
id ${id}
user UserCascade @relation(fields: [userId], references: [id], onUpdate: Cascade, onDelete: Cascade)
userId String @unique
}
`
})

0 comments on commit 47b552b

Please sign in to comment.