@prisma-extensions/find-or-create
Version:
Simplify your development experience by finding or creating records with a function.
62 lines (52 loc) • 1.32 kB
text/typescript
import { faker } from '@faker-js/faker'
import { PrismaClient } from '@prisma/client'
import { afterAll, afterEach, describe, expect, test } from 'vitest'
import { extension } from './find-or-create'
const prisma = new PrismaClient({
// log: ["query"],
})
describe('Find or Create', () => {
afterEach(async () => {
await prisma.user.deleteMany()
})
afterAll(async () => {
await prisma.$disconnect()
})
const xprisma = prisma.$extends(extension)
test('find', async () => {
const user = await xprisma.user.create({
data: {
firstName: faker.name.firstName(),
lastName: faker.name.lastName(),
},
})
const res = await xprisma.user.findOrCreate({
select: { id: true },
where: {
id: user.id,
},
create: {
firstName: faker.name.firstName(),
lastName: faker.name.lastName(),
},
})
expect(res.id).toEqual(user.id)
})
test('create', async () => {
const res = await xprisma.user.findOrCreate({
select: { id: true },
where: {
id: 0,
},
create: {
firstName: faker.name.firstName(),
lastName: faker.name.lastName(),
},
})
expect(res).toEqual(
expect.objectContaining({
id: expect.any(Number),
}),
)
})
})