tests.ts•2.91 kB
import { faker } from '@faker-js/faker'
import testMatrix from './_matrix'
// @ts-ignore
import type { PrismaClient } from './generated/prisma/client'
declare let prisma: PrismaClient
testMatrix.setupTestSuite(
() => {
test('should create many records', async () => {
const email1 = faker.internet.email()
const email2 = faker.internet.email()
const email3 = faker.internet.email()
const email4 = faker.internet.email()
const created = await prisma.user.createMany({
data: [
{
email: email1,
},
{
email: email2,
},
{
email: email3,
},
{
email: email4,
},
],
})
expect(created.count).toEqual(4)
})
test('should create a single record with a single nested create', async () => {
const email = faker.internet.email()
const name = faker.person.firstName()
const title = faker.person.firstName()
const res = await prisma.user.create({
include: {
posts: true,
},
data: {
name,
email,
posts: {
createMany: {
data: {
title,
},
},
},
},
})
expect(res.email).toEqual(email)
expect(res.name).toEqual(name)
expect(res.posts.length).toEqual(1)
expect(res.posts[0].title).toEqual(title)
})
test('should create a single record with many nested create', async () => {
const email = faker.internet.email()
const name = faker.person.firstName()
const title1 = faker.person.firstName()
const title2 = faker.person.firstName()
const title3 = faker.person.firstName()
const title4 = faker.person.firstName()
const res = await prisma.user.create({
include: {
posts: true,
},
data: {
name,
email,
posts: {
createMany: {
data: [{ title: title1 }, { title: title2 }, { title: title3 }, { title: title4 }],
},
},
},
})
expect(res.email).toEqual(email)
expect(res.name).toEqual(name)
expect(res.posts.length).toEqual(4)
const post1 = res.posts.find((p) => p.title === title1)
expect(post1).toBeTruthy()
const post2 = res.posts.find((p) => p.title === title2)
expect(post2).toBeTruthy()
const post3 = res.posts.find((p) => p.title === title3)
expect(post3).toBeTruthy()
const post4 = res.posts.find((p) => p.title === title4)
expect(post4).toBeTruthy()
})
},
{
skipDriverAdapter: {
from: ['js_d1'],
reason:
'D1 driver adapter does not return the correct number of created records. See https://github.com/prisma/team-orm/issues/1069',
},
},
)