From 48fdb97d1e79d7b294c6bbdaad38435ef06f3ea3 Mon Sep 17 00:00:00 2001 From: Teddy Morin Date: Sat, 31 Aug 2024 13:23:53 +0200 Subject: [PATCH 1/3] =?UTF-8?q?test:=20=F0=9F=92=8D=20add=20test=20for=20m?= =?UTF-8?q?atch=20with=20findMany=20/=20and-or?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/__tests__/find/find-many-match.test.ts | 48 ++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/__tests__/find/find-many-match.test.ts diff --git a/src/__tests__/find/find-many-match.test.ts b/src/__tests__/find/find-many-match.test.ts new file mode 100644 index 00000000..0b074b0a --- /dev/null +++ b/src/__tests__/find/find-many-match.test.ts @@ -0,0 +1,48 @@ +import { Prisma, User, PrismaClient } from '@prisma/client'; + +import { formatEntries, resetDb, seededUsers, simulateSeed } from '../../../testing'; +import { PrismockClient, PrismockClientType } from '../../lib/client'; + +jest.setTimeout(40000); + +describe('findMany (match)', () => { + let prismock: PrismockClientType; + let prisma: PrismaClient; + + beforeAll(async () => { + await resetDb(); + + prisma = new PrismaClient(); + prismock = new PrismockClient() as PrismockClientType; + await simulateSeed(prismock); + }); + + describe('match', () => { + const matchers: [string, Prisma.UserFindFirstArgs, User[]][] = [ + [ + 'and/or', + { + where: { + AND: [ + { + OR: [{ email: { contains: '1', mode: 'insensitive' } }, { email: { contains: '3', mode: 'insensitive' } }], + }, + ], + }, + }, + [seededUsers[0], seededUsers[2]], + ], + ]; + + matchers.forEach(([name, find, expected]) => { + it(`Should match on ${name}`, async () => { + const realUsers = await prisma.user.findMany(find); + + const mockUsers = await prismock.user.findMany(find); + + expect(formatEntries(realUsers)).toEqual(formatEntries(expected)); + expect(formatEntries(mockUsers)).toEqual(formatEntries(expected)); + }); + }); + }); +}); From 5dfbf5c6aabb0f39ae670c1aa818ca1921182bd6 Mon Sep 17 00:00:00 2001 From: Teddy Morin Date: Sat, 31 Aug 2024 13:28:58 +0200 Subject: [PATCH 2/3] =?UTF-8?q?test:=20=F0=9F=92=8D=20ignore=20test=20on?= =?UTF-8?q?=20unsupported=20db?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/__tests__/find/find-many-match.test.ts | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/__tests__/find/find-many-match.test.ts b/src/__tests__/find/find-many-match.test.ts index 0b074b0a..fd53305b 100644 --- a/src/__tests__/find/find-many-match.test.ts +++ b/src/__tests__/find/find-many-match.test.ts @@ -1,17 +1,24 @@ +/* eslint-disable jest/no-conditional-expect */ import { Prisma, User, PrismaClient } from '@prisma/client'; import { formatEntries, resetDb, seededUsers, simulateSeed } from '../../../testing'; import { PrismockClient, PrismockClientType } from '../../lib/client'; +import { fetchGenerator, getProvider } from '../../lib/prismock'; jest.setTimeout(40000); describe('findMany (match)', () => { let prismock: PrismockClientType; let prisma: PrismaClient; + let provider: string; beforeAll(async () => { await resetDb(); + const generator = await fetchGenerator(); + provider = getProvider(generator)!; + generator.stop(); + prisma = new PrismaClient(); prismock = new PrismockClient() as PrismockClientType; await simulateSeed(prismock); @@ -36,12 +43,17 @@ describe('findMany (match)', () => { matchers.forEach(([name, find, expected]) => { it(`Should match on ${name}`, async () => { - const realUsers = await prisma.user.findMany(find); + if (!['mysql', 'sqlserver'].includes(provider)) { + const realUsers = await prisma.user.findMany(find); - const mockUsers = await prismock.user.findMany(find); + const mockUsers = await prismock.user.findMany(find); - expect(formatEntries(realUsers)).toEqual(formatEntries(expected)); - expect(formatEntries(mockUsers)).toEqual(formatEntries(expected)); + expect(formatEntries(realUsers)).toEqual(formatEntries(expected)); + expect(formatEntries(mockUsers)).toEqual(formatEntries(expected)); + } else { + // eslint-disable-next-line no-console + console.log('[SKIPPED] Insensitive is not supported on the current db'); + } }); }); }); From 06d1ed16e6142b442e6ad525eb5dd4498cb98551 Mon Sep 17 00:00:00 2001 From: Teddy Morin Date: Sat, 31 Aug 2024 13:36:56 +0200 Subject: [PATCH 3/3] =?UTF-8?q?test:=20=F0=9F=92=8D=20make=20ts=20happy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/__tests__/find/find-many-match.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/__tests__/find/find-many-match.test.ts b/src/__tests__/find/find-many-match.test.ts index fd53305b..10d045f9 100644 --- a/src/__tests__/find/find-many-match.test.ts +++ b/src/__tests__/find/find-many-match.test.ts @@ -36,7 +36,7 @@ describe('findMany (match)', () => { }, ], }, - }, + } as Prisma.UserFindManyArgs, [seededUsers[0], seededUsers[2]], ], ];