tests.ts•3.61 kB
import { 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
// TODO: maybe we can split each relation into a separate file for readability
testMatrix.setupTestSuite(
  (suiteConfig, suiteMeta) => {
    describe('issue 14271', () => {
      afterAll(async () => {
        await prisma.$disconnect()
      })
      test('issue 14271', async () => {
        await prisma['hub'].create({
          data: {
            name: 'hub-1',
            batteryLevels: {
              createMany: {
                data: [
                  {
                    name: 'battery-1-hub-1',
                  },
                  {
                    name: 'battery-2-hub-1',
                  },
                ],
              },
            },
          },
        })
        await prisma['hub'].create({
          data: {
            name: 'hub-2',
            batteryLevels: {
              createMany: {
                data: [
                  {
                    name: 'battery-1-hub-2',
                  },
                  {
                    name: 'battery-2-hub-2',
                  },
                ],
              },
            },
          },
        })
        expect(await prisma['hub'].findMany({ orderBy: { id: 'asc' } })).toMatchInlineSnapshot(`
          [
            {
              "id": 1,
              "name": "hub-1",
            },
            {
              "id": 2,
              "name": "hub-2",
            },
          ]
        `)
        expect(await prisma['batteryLevel'].findMany({ orderBy: { id: 'asc' } })).toMatchInlineSnapshot(`
          [
            {
              "hubId": 1,
              "id": 1,
              "name": "battery-1-hub-1",
            },
            {
              "hubId": 1,
              "id": 2,
              "name": "battery-2-hub-1",
            },
            {
              "hubId": 2,
              "id": 3,
              "name": "battery-1-hub-2",
            },
            {
              "hubId": 2,
              "id": 4,
              "name": "battery-2-hub-2",
            },
          ]
        `)
        await prisma['hub'].delete({
          where: { name: 'hub-1' },
        })
        expect(await prisma['hub'].findMany({})).toMatchInlineSnapshot(`
          [
            {
              "id": 2,
              "name": "hub-2",
            },
          ]
        `)
        expect(await prisma['batteryLevel'].findMany({ orderBy: { id: 'asc' } })).toMatchInlineSnapshot(`
          [
            {
              "hubId": null,
              "id": 1,
              "name": "battery-1-hub-1",
            },
            {
              "hubId": null,
              "id": 2,
              "name": "battery-2-hub-1",
            },
            {
              "hubId": 2,
              "id": 3,
              "name": "battery-1-hub-2",
            },
            {
              "hubId": 2,
              "id": 4,
              "name": "battery-2-hub-2",
            },
          ]
        `)
      })
    })
  },
  // Use `optOut` to opt out from testing the default selected providers
  // otherwise the suite will require all providers to be specified.
  {
    optOut: {
      from: [
        Providers.MONGODB,
        Providers.SQLSERVER,
        Providers.MYSQL,
        Providers.POSTGRESQL,
        Providers.COCKROACHDB,
        Providers.SQLITE,
      ],
      reason: 'Only testing postgresql',
    },
  },
)