tests.ts•2.8 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(
() => {
const email = faker.internet.email()
const title = faker.person.jobTitle()
const newEmail = faker.internet.email()
const newTitle = faker.person.jobTitle()
describe('multischema', () => {
test('create', async () => {
const created = await prisma.user.create({
data: {
email,
posts: {
create: [{ title }],
},
},
select: {
email: true,
posts: true,
},
})
expect(created).toMatchObject({
email,
posts: [{ title }],
})
})
test('read', async () => {
const [read] = await prisma.user.findMany({
where: {
email,
posts: {
some: {
title,
},
},
},
select: {
email: true,
posts: true,
},
})
expect(read).toMatchObject({
email,
posts: [{ title }],
})
})
test('update', async () => {
await prisma.post.updateMany({
where: {
title,
},
data: { title: newTitle },
})
await prisma.user.updateMany({
where: {
email,
},
data: { email: newEmail },
})
const [read] = await prisma.user.findMany({
where: {
email: newEmail,
posts: {
some: {
title: newTitle,
},
},
},
select: {
email: true,
posts: true,
},
})
expect(read).toMatchObject({
email: newEmail,
posts: [{ title: newTitle }],
})
})
test('delete', async () => {
await prisma.post.deleteMany({
where: {
title: newTitle,
},
})
await prisma.user.deleteMany({
where: {
email: newEmail,
},
})
expect(
await prisma.post.findMany({
where: {
title: newTitle,
},
}),
).toHaveLength(0)
expect(
await prisma.user.findMany({
where: {
email: newEmail,
},
}),
).toHaveLength(0)
})
})
},
{
optOut: {
from: ['sqlite', 'mongodb', 'mysql', 'cockroachdb'],
reason: 'Multi Schema only working for postgresql and sqlserver',
},
},
)