From e45e5806274b8286b4c7db22f70f65b43eb14825 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 15 Mar 2022 12:30:02 +0100 Subject: [PATCH] setup testClient for seeding --- backend/package.json | 3 +- .../src/graphql/resolver/UserResolver.test.ts | 2 +- backend/src/seeds/index.ts | 51 +++++++++++++++++++ backend/src/seeds/users/index.ts | 7 +++ 4 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 backend/src/seeds/index.ts create mode 100644 backend/src/seeds/users/index.ts diff --git a/backend/package.json b/backend/package.json index 79e5fd130..f1797dd61 100644 --- a/backend/package.json +++ b/backend/package.json @@ -13,7 +13,8 @@ "start": "node build/src/index.js", "dev": "nodemon -w src --ext ts --exec ts-node src/index.ts", "lint": "eslint --max-warnings=0 --ext .js,.ts .", - "test": "TZ=UTC NODE_ENV=development jest --runInBand --coverage --forceExit --detectOpenHandles" + "test": "TZ=UTC NODE_ENV=development jest --runInBand --coverage --forceExit --detectOpenHandles", + "seed": "TZ=UTC ts-node src/seeds/index.ts" }, "dependencies": { "@types/jest": "^27.0.2", diff --git a/backend/src/graphql/resolver/UserResolver.test.ts b/backend/src/graphql/resolver/UserResolver.test.ts index 1e43a60b2..61625a8ae 100644 --- a/backend/src/graphql/resolver/UserResolver.test.ts +++ b/backend/src/graphql/resolver/UserResolver.test.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import { testEnvironment, headerPushMock, cleanDB, resetToken } from '@test/helpers' +import { testEnvironment, headerPushMock, resetToken, cleanDB } from '@test/helpers' import { createUserFactory } from '@/seeds/factory/user' import { bibiBloxberg } from '@/seeds/users/bibi-bloxberg' import { createUser, setPassword } from '@/seeds/graphql/mutations' diff --git a/backend/src/seeds/index.ts b/backend/src/seeds/index.ts new file mode 100644 index 000000000..3bad52642 --- /dev/null +++ b/backend/src/seeds/index.ts @@ -0,0 +1,51 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ + +import createServer from '../server/createServer' +import { createTestClient } from 'apollo-server-testing' + +import { users } from './users/index' +import { createUserFactory } from './factory/user' +import { entities } from '@entity/index' + +const context = { + token: '', + setHeaders: { + push: (value: string): void => { + context.token = value + }, + // eslint-disable-next-line @typescript-eslint/no-empty-function + forEach: (): void => {}, + }, +} + +export const cleanDB = async () => { + // this only works as lond we do not have foreign key constraints + for (let i = 0; i < entities.length; i++) { + await resetEntity(entities[i]) + } +} + +const resetEntity = async (entity: any) => { + const items = await entity.find({ withDeleted: true }) + if (items.length > 0) { + const ids = items.map((i: any) => i.id) + await entity.delete(ids) + } +} + +const run = async () => { + const server = await createServer(context) + const testClient = createTestClient(server.apollo) + const { mutate } = testClient + const { con } = server + await cleanDB() + + for (let i = 0; i < users.length; i++) { + await createUserFactory(mutate, users[i]) + } + + await con.close() +} + +run() diff --git a/backend/src/seeds/users/index.ts b/backend/src/seeds/users/index.ts new file mode 100644 index 000000000..76e242f84 --- /dev/null +++ b/backend/src/seeds/users/index.ts @@ -0,0 +1,7 @@ +import { peterLustig } from './peter-lustig' +import { bibiBloxberg } from './bibi-bloxberg' +import { bobBaumeister } from './bob-baumeister' +import { raeuberHotzenplotz } from './raeuber-hotzenplotz' +import { stephenHawking } from './stephen-hawking' + +export const users = [peterLustig, bibiBloxberg, bobBaumeister, raeuberHotzenplotz, stephenHawking]