feat: Test Create User Mutation

This commit is contained in:
Moriz Wahl 2021-12-27 15:57:04 +01:00
parent 0b9225da09
commit 3d349b2121
9 changed files with 81 additions and 27 deletions

View File

@ -6,5 +6,7 @@ module.exports = {
collectCoverageFrom: ['src/**/*.ts', '!**/node_modules/**'],
moduleNameMapper: {
'@entity/(.*)': '<rootDir>/../database/entity/$1',
'@dbTools/(.*)': '<rootDir>/../database/src/$1',
'@migrations/(.*)': '<rootDir>/../database/migrations/$1',
},
}

View File

@ -59,6 +59,8 @@
"typescript": "^4.3.4"
},
"_moduleAliases": {
"@entity": "../database/build/entity"
"@entity": "../database/build/entity",
"@migrations": "../database/migrations",
"@dbTools": "../database/src"
}
}

View File

@ -0,0 +1,30 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import { createTestClient } from 'apollo-server-testing'
import createServer from '../../server/createServer'
import { resetDB, initialize } from '@dbTools/helpers'
let mutate: any
let con: any
beforeAll(async () => {
const server = await createServer({})
con = server.con
mutate = createTestClient(server.apollo).mutate
await initialize()
await resetDB()
})
describe('UserResolver', () => {
describe('createUser', () => {
it('works', () => {
expect(true).toBeTruthy()
})
})
})
afterAll(async () => {
await resetDB(true)
await con.close()
})

View File

@ -47,7 +47,9 @@
// "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
// "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
"paths": { /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
"@entity/*": ["../database/entity/*"]
"@entity/*": ["../database/entity/*"],
"@dbTools/*": ["../database/src/*"],
"@migrations/*": ["../database/migrations/*"]
},
// "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
// "typeRoots": [], /* List of folders to include type definitions from. */

View File

@ -45,5 +45,8 @@
"ts-mysql-migrate": "^1.0.2",
"typeorm": "^0.2.38",
"typeorm-seeding": "^1.6.1"
},
"_moduleAliases": {
"@migrations": "./migrations"
}
}

View File

@ -13,7 +13,7 @@ const database = {
const migrations = {
MIGRATIONS_TABLE: process.env.MIGRATIONS_TABLE || 'migrations',
MIGRATIONS_DIRECTORY: process.env.MIGRATIONS_DIRECTORY || './migrations/',
MIGRATIONS_DIRECTORY: process.env.MIGRATIONS_DIRECTORY || '@migrations/',
}
const CONFIG = { ...database, ...migrations }

33
database/src/helpers.ts Normal file
View File

@ -0,0 +1,33 @@
import CONFIG from './config'
import { createPool, PoolConfig } from 'mysql'
import { Migration } from 'ts-mysql-migrate'
const poolConfig: PoolConfig = {
host: CONFIG.DB_HOST,
port: CONFIG.DB_PORT,
user: CONFIG.DB_USER,
password: CONFIG.DB_PASSWORD,
database: CONFIG.DB_DATABASE,
}
// Pool?
const pool = createPool(poolConfig)
// Create & Initialize Migrations
const migration = new Migration({
conn: pool,
tableName: CONFIG.MIGRATIONS_TABLE,
silent: true,
dir: '../database/migrations/', // CONFIG.MIGRATIONS_DIRECTORY,
})
const initialize = async () => {
await migration.initialize()
}
const resetDB = async (closePool = false): Promise<void> => {
await migration.reset() // use for resetting database
if (closePool) pool.end()
}
export { resetDB, pool, migration, initialize }

View File

@ -1,7 +1,4 @@
import 'reflect-metadata'
import { createPool, PoolConfig } from 'mysql'
import { Migration } from 'ts-mysql-migrate'
import CONFIG from './config'
import prepare from './prepare'
import connection from './typeorm/connection'
import { useSeeding, runSeeder } from 'typeorm-seeding'
@ -10,36 +7,19 @@ import { CreateBibiBloxbergSeed } from './seeds/users/bibi-bloxberg.seed'
import { CreateRaeuberHotzenplotzSeed } from './seeds/users/raeuber-hotzenplotz.seed'
import { CreateBobBaumeisterSeed } from './seeds/users/bob-baumeister.seed'
import { DecayStartBlockSeed } from './seeds/decay-start-block.seed'
import { resetDB, pool, migration } from './helpers'
const run = async (command: string) => {
// Database actions not supported by our migration library
await prepare()
// Database connection for Migrations
const poolConfig: PoolConfig = {
host: CONFIG.DB_HOST,
port: CONFIG.DB_PORT,
user: CONFIG.DB_USER,
password: CONFIG.DB_PASSWORD,
database: CONFIG.DB_DATABASE,
}
// Pool?
const pool = createPool(poolConfig)
// Create & Initialize Migrations
const migration = new Migration({
conn: pool,
tableName: CONFIG.MIGRATIONS_TABLE,
dir: CONFIG.MIGRATIONS_DIRECTORY,
})
// Database connection for TypeORM
const con = await connection()
if (!con || !con.isConnected) {
throw new Error(`Couldn't open connection to database`)
}
// Database connection for Migrations
await migration.initialize()
// Execute command
@ -52,7 +32,7 @@ const run = async (command: string) => {
break
case 'reset':
// TODO protect from production
await migration.reset() // use for resetting database
await resetDB(false) // use for resetting database
break
case 'seed':
// TODO protect from production

View File

@ -46,7 +46,9 @@
/* Module Resolution Options */
// "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
// "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
// "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
"paths": { /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
"@migrations/*": ["./migrations/*"],
},
// "rootDirs": [".", "../database"], /* List of root folders whose combined content represents the structure of the project at runtime. */
// "typeRoots": [], /* List of folders to include type definitions from. */
// "types": [], /* Type declaration files to be included in compilation. */