Skip to content

Commit

Permalink
test(client): namedConstraints @@unique @@id with and without name (#…
Browse files Browse the repository at this point in the history
…8620)

* test(client): namedConstraints @@unique @@id with and without name

* Update test.ts

* Actually needs to be lower cased in Prisma Client API

Co-authored-by: Matthias Oertel <Matthias.oertel@gmx.net>
Co-authored-by: Jan Piotrowski <piotrowski+github@gmail.com>
  • Loading branch information
3 people committed Aug 6, 2021
1 parent 72cc110 commit 512ddab
Show file tree
Hide file tree
Showing 4 changed files with 153 additions and 20 deletions.
Expand Up @@ -7,9 +7,32 @@ generator client {
provider = "prisma-client-js"
previewFeatures = ["namedConstraints"]
}
model User1 {
firstName String
lastName String
isAdmin Boolean @default(false)
@@id(fields: [firstName, lastName], name: "customName")

model AtAtId {
key1 String
key2 Int
@@id([key1, key2])
}

model AtAtIdNamed {
key1 String
key2 Int
@@id(fields: [key1, key2], name: "namedConstraintId")
}

// named @@unique was possible before namedConstraints but we still want to test it
model AtAtUnique {
key1 String
key2 Int
@@unique([key1, key2])
}

model AtAtUniqueNamed {
key1 String
key2 Int
@@unique(fields: [key1, key2], name: "namedConstraintUnique")
}
Expand Up @@ -3,7 +3,7 @@ import { generateTestClient } from '../../../../utils/getTestClient'
import { migrateDb } from '../../__helpers__/migrateDb'

let prisma
describe('namedConstraint(sqlite)', () => {
describe('namedConstraints(sqlite)', () => {
beforeAll(async () => {
await migrateDb({
connectionString: `file:./dev.db`,
Expand All @@ -14,27 +14,102 @@ describe('namedConstraint(sqlite)', () => {
prisma = new PrismaClient()
})

afterEach(async () => {
await prisma.user1.deleteMany()
beforeEach(async () => {
await prisma.atAtId.deleteMany()
await prisma.atAtIdNamed.deleteMany()
await prisma.atAtUnique.deleteMany()
await prisma.atAtUniqueNamed.deleteMany()
})

afterAll(async () => {
await prisma.$disconnect()
})
test('findUnique using namedConstraint', async () => {
await prisma.user1.create({

test('findUnique using @@id by default name', async () => {
await prisma.atAtId.create({
data: {
key1: 'data',
key2: 2,
},
})
const result: { key1: string; key2: number } | null =
await prisma.atAtId.findUnique({
where: {
key1_key2: {
key1: 'data',
key2: 2,
},
},
})
expect(result).toEqual({
key1: 'data',
key2: 2,
})
})

test('findUnique using @@id by custom name', async () => {
await prisma.atAtIdNamed.create({
data: {
key1: 'data',
key2: 2,
},
})
const result: { key1: string; key2: number } | null =
await prisma.atAtIdNamed.findUnique({
where: {
namedConstraintId: {
key1: 'data',
key2: 2,
},
},
})
expect(result).toEqual({
key1: 'data',
key2: 2,
})
})

test('findUnique using @@unique by default name', async () => {
await prisma.atAtUnique.create({
data: {
firstName: 'Alice',
lastName: 'Ball',
key1: 'data',
key2: 2,
},
})
const user = await prisma.user1.findUnique({
where: {
customName: {
firstName: 'Alice',
lastName: 'Ball',
const result: { key1: string; key2: number } | null =
await prisma.atAtUnique.findUnique({
where: {
key1_key2: {
key1: 'data',
key2: 2,
},
},
})
expect(result).toEqual({
key1: 'data',
key2: 2,
})
})

test('findUnique using @@unique by custom name', async () => {
await prisma.atAtUniqueNamed.create({
data: {
key1: 'data',
key2: 2,
},
})
expect(user.firstName).toEqual('Alice')
const result: { key1: string; key2: number } | null =
await prisma.atAtUniqueNamed.findUnique({
where: {
namedConstraintUnique: {
key1: 'data',
key2: 2,
},
},
})
expect(result).toEqual({
key1: 'data',
key2: 2,
})
})
})
Expand Up @@ -20,6 +20,20 @@ model AtAtIdNamed {
key1 String
key2 Int
@@id(fields:[key1, key2], name:"namedConstraint")
@@id(fields: [key1, key2], name: "namedConstraintId")
}

// named @@unique was possible before namedConstraints but we still want to test it
model AtAtUnique {
key1 String
key2 Int
@@unique([key1, key2])
}

model AtAtUniqueNamed {
key1 String
key2 Int
@@unique(fields: [key1, key2], name: "namedConstraintUnique")
}
23 changes: 22 additions & 1 deletion packages/client/src/__tests__/types/namedConstraints/test.ts
Expand Up @@ -5,10 +5,12 @@ import { PrismaClient } from '@prisma/client'
// This file will not be executed, just compiled to check if the typings are valid
async function main() {
const prisma = new PrismaClient()

// @@id
const result: { key1: string; key2: number } | null =
await prisma.atAtIdNamed.findUnique({
where: {
namedConstraint: {
namedConstraintId: {
key1: 'data',
key2: 2,
},
Expand All @@ -23,6 +25,25 @@ async function main() {
},
},
})

// @@unique
const result3 = await prisma.atAtUniqueNamed.findUnique({
where: {
namedConstraintUnique: {
key1: 'data',
key2: 2,
},
},
})
const result4: { key1: string; key2: number } | null =
await prisma.atAtUnique.findUnique({
where: {
key1_key2: {
key1: 'data',
key2: 2,
},
},
})
}

main().catch((e) => {
Expand Down

0 comments on commit 512ddab

Please sign in to comment.