tests.ts•1.99 kB
import { AdapterProviders, Providers } from '../_utils/providers'
import testMatrix from './_matrix'
/* eslint-disable @typescript-eslint/no-unused-vars */
// @ts-ignore this is just for type checks
declare let prisma: import('./generated/prisma/client').PrismaClient
testMatrix.setupTestSuite(
  (suiteConfig, suiteMeta) => {
    describe('relationMode with deprecated `referentialIntegrity` datasource property', () => {
      beforeEach(async () => {
        await prisma.$transaction([prisma.profileOneToOne.deleteMany(), prisma.userOneToOne.deleteMany()])
      })
      afterAll(async () => {
        await prisma.$disconnect()
      })
      test('[create] and [delete] should succeed', async () => {
        await prisma.userOneToOne.create({
          data: {
            id: '1',
            profile: {
              create: { id: '1' },
            },
          },
          include: {
            profile: true,
          },
        })
        expect(await prisma.userOneToOne.findMany()).toEqual([
          {
            id: '1',
            enabled: null,
          },
        ])
        expect(await prisma.profileOneToOne.findMany()).toEqual([
          {
            id: '1',
            userId: '1',
            enabled: null,
          },
        ])
        // onDelete: Cascade
        await prisma.userOneToOne.deleteMany()
        expect(await prisma.userOneToOne.findMany()).toEqual([])
        expect(await prisma.profileOneToOne.findMany()).toEqual([])
      })
    })
  },
  {
    optOut: {
      from: [Providers.SQLSERVER, Providers.MYSQL, Providers.POSTGRESQL, Providers.COCKROACHDB, Providers.MONGODB],
      reason: 'Only testing SQLite, as this is just for testing the deprecated property',
    },
    skipDriverAdapter: {
      from: [AdapterProviders.JS_LIBSQL],
      reason:
        'js_libsql: SIGABRT crash occurs on having the first transaction with at least two create statements, panic inside `statement.rs` inside libsql',
    },
  },
)