mirror of
https://github.com/IT4Change/Ocelot-Social.git
synced 2025-12-13 07:45:56 +00:00
Start a test server only once.
This keeps our tests small. It is quite a headache though, because of an issue with jest and with transpiling. For reasons that I don't understand running `yarn run test:jest` sometimes complains about open handles. I would love to hear how to make our build more reliable.
This commit is contained in:
parent
b2bad4fedb
commit
9262fbb44f
@ -137,6 +137,15 @@ npm run db:reset
|
||||
|
||||
**Beware**: We have no multiple database setup at the moment. We clean the database after each test, running the tests will wipe out all your data!
|
||||
|
||||
First build `server.js`:
|
||||
```bash
|
||||
yarn run build
|
||||
# -or-
|
||||
npm run build
|
||||
```
|
||||
The additional build step will become obsolete, as soon as [jest transforms global setup teardown modules](https://github.com/facebook/jest/issues/5164).
|
||||
|
||||
Now run the tests:
|
||||
```bash
|
||||
yarn run test
|
||||
# -or-
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
"lint": "eslint src --config .eslintrc.js",
|
||||
"test": "nyc --reporter=text-lcov yarn run test:jest",
|
||||
"test:jest": "$npm_package_config_no_auth run-p --race start test:cmd:jest",
|
||||
"test:cmd:jest": "jest --forceExit",
|
||||
"test:cmd:jest": "jest --forceExit --detectOpenHandles",
|
||||
"test:coverage": "nyc report --reporter=text-lcov > coverage.lcov",
|
||||
"db:script:seed": "wait-on tcp:4001 && babel-node src/seed/seed-db.js",
|
||||
"db:script:reset": "wait-on tcp:4001 && babel-node src/seed/reset-db.js",
|
||||
@ -25,7 +25,9 @@
|
||||
"license": "MIT",
|
||||
"jest": {
|
||||
"verbose": true,
|
||||
"testMatch": ["**/src/**/?(*.)+(spec|test).js?(x)" ]
|
||||
"testMatch": ["**/src/**/?(*.)+(spec|test).js?(x)" ],
|
||||
"globalSetup": "<rootDir>/src/jest/globalSetup",
|
||||
"globalTeardown": "<rootDir>/src/jest/globalTeardown"
|
||||
},
|
||||
"dependencies": {
|
||||
"apollo-cache-inmemory": "~1.3.11",
|
||||
|
||||
@ -1,23 +1,8 @@
|
||||
import { request } from 'graphql-request'
|
||||
import createServer from './server'
|
||||
import mocks from './mocks'
|
||||
import { create, cleanDatabase } from './seed/factories'
|
||||
import jwt from 'jsonwebtoken'
|
||||
|
||||
let getHost
|
||||
let app
|
||||
let port
|
||||
|
||||
beforeEach(async () => {
|
||||
const server = createServer({ mocks })
|
||||
app = await server.start({ port: 0 })
|
||||
port = app.address().port
|
||||
getHost = () => `http://127.0.0.1:${port}`
|
||||
})
|
||||
|
||||
afterEach(async () => {
|
||||
await app.close()
|
||||
})
|
||||
let getHost = () => 'http://127.0.0.1:3123'
|
||||
|
||||
describe('login', () => {
|
||||
const mutation = (params) => {
|
||||
1
src/jest/globalSetup.js
Normal file
1
src/jest/globalSetup.js
Normal file
@ -0,0 +1 @@
|
||||
module.exports = require('./hooks').setup
|
||||
1
src/jest/globalTeardown.js
Normal file
1
src/jest/globalTeardown.js
Normal file
@ -0,0 +1 @@
|
||||
module.exports = require('./hooks').teardown
|
||||
16
src/jest/hooks.js
Normal file
16
src/jest/hooks.js
Normal file
@ -0,0 +1,16 @@
|
||||
const createServer = require('../../dist/server.js').default
|
||||
let app
|
||||
|
||||
const setup = async function () {
|
||||
const server = createServer()
|
||||
app = await server.start({ port: 3123 })
|
||||
}
|
||||
|
||||
const teardown = async function () {
|
||||
await app.close()
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
setup,
|
||||
teardown
|
||||
}
|
||||
33
src/middleware/permissionsMiddleware.spec.js
Normal file
33
src/middleware/permissionsMiddleware.spec.js
Normal file
@ -0,0 +1,33 @@
|
||||
import { request } from 'graphql-request'
|
||||
import createServer from '../server'
|
||||
import mocks from '../mocks'
|
||||
import { create, cleanDatabase } from '../seed/factories'
|
||||
import generateJwt from '../jwt/generateToken'
|
||||
|
||||
describe('authorization', () => {
|
||||
describe('given an existing user', () => {
|
||||
|
||||
describe('logged in', () => {
|
||||
let jwt
|
||||
beforeEach(() => {
|
||||
// jwt = generateJwt(user)
|
||||
})
|
||||
|
||||
describe('query own user profile', () => {
|
||||
const mutation = (params) => {
|
||||
const { email, password } = params
|
||||
return `{
|
||||
User(email: "${email}") {
|
||||
name
|
||||
}
|
||||
}`
|
||||
}
|
||||
|
||||
it('returns the owner\'s email address', async () => {
|
||||
// const data = await request(getHost(), mutation({ email: 'test@example.org' }))
|
||||
console.log('it runs')
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
@ -1,15 +0,0 @@
|
||||
describe('query', () => {
|
||||
describe('statistics', () => {
|
||||
describe('authenticated user', () => {
|
||||
describe('read', () => {
|
||||
xit('is forbidden', () => {})
|
||||
})
|
||||
})
|
||||
|
||||
describe('admin', () => {
|
||||
describe('read', () => {
|
||||
xit('is permitted', () => {})
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
Loading…
x
Reference in New Issue
Block a user