test(api): setup mongo schema before running tests (#51686)

Co-authored-by: Muhammed Mustafa <MuhammedElruby@gmail.com>
pull/51772/head^2
Oliver Eyton-Williams 2023-10-04 00:00:21 +02:00 committed by GitHub
parent 25ff25e74f
commit 5c8b94f236
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 1 deletions

View File

@ -64,7 +64,8 @@ export function setupServer(): void {
await fastify.ready();
global.fastifyTestInstance = fastify;
});
// allow a little time to setup the db
}, 10000);
afterAll(async () => {
// Due to a prisma bug, this is not enough, we need to --force-exit jest:

View File

@ -1,3 +1,4 @@
import { execSync } from 'node:child_process';
import fp from 'fastify-plugin';
import { FastifyPluginAsync } from 'fastify';
import { PrismaClient } from '@prisma/client';
@ -18,6 +19,19 @@ const isTest = (workerId: string | undefined): workerId is string =>
!!workerId && FREECODECAMP_NODE_ENV === 'development';
const prismaPlugin: FastifyPluginAsync = fp(async (server, _options) => {
if (isTest(process.env.JEST_WORKER_ID)) {
// push the schema to the test db to setup indexes, unique constraints, etc
execSync('pnpm prisma db push', {
env: {
...process.env,
MONGOHQ_URL: createTestConnectionURL(
MONGOHQ_URL,
process.env.JEST_WORKER_ID
)
}
});
}
const prisma = isTest(process.env.JEST_WORKER_ID)
? new PrismaClient({
datasources: {