tests.ts•1.88 kB
import { ClientEngineType } from '@prisma/internals'
import { NewPrismaClient } from '../../_utils/types'
import testMatrix from './_matrix'
// @ts-ignore
import type { PrismaClient } from './generated/prisma/client'
declare const newPrismaClient: NewPrismaClient<PrismaClient, typeof PrismaClient>
// https://github.com/prisma/prisma/issues/12507
testMatrix.setupTestSuite(
({ engineType }) => {
test('should create data using one PrismaClient and read using another', async () => {
if (engineType !== ClientEngineType.Binary) {
return
}
const prismaClient1 = newPrismaClient({
log: [
{
emit: 'event',
level: 'info',
},
],
})
const internalURL = await ((): Promise<string> =>
new Promise((resolve, reject) => {
// @ts-expect-error - client not typed for log opts for cross generator compatibility - can be improved once we drop the prisma-client-js generator
prismaClient1.$on('info', (data: Prisma.LogEvent) => {
if (/Started query engine/.test(data.message as string)) {
const port = data.message.split(':').pop()
resolve(`http://127.0.0.1:${port}`)
}
})
prismaClient1.$connect().catch(reject)
}))()
const prismaClient2 = newPrismaClient({
// @ts-test-if: false
__internal: {
engine: {
endpoint: internalURL,
},
},
})
const name = 'some-random-name'
const created = await prismaClient1.user.create({ data: { name } })
const [found] = await prismaClient2.user.findMany({ where: { name } })
expect(created).toMatchObject(found)
await prismaClient1.$disconnect()
await prismaClient2.$disconnect()
})
},
{
skipDefaultClientInstance: true,
},
)