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!
|
**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
|
```bash
|
||||||
yarn run test
|
yarn run test
|
||||||
# -or-
|
# -or-
|
||||||
|
|||||||
@ -14,7 +14,7 @@
|
|||||||
"lint": "eslint src --config .eslintrc.js",
|
"lint": "eslint src --config .eslintrc.js",
|
||||||
"test": "nyc --reporter=text-lcov yarn run test:jest",
|
"test": "nyc --reporter=text-lcov yarn run test:jest",
|
||||||
"test:jest": "$npm_package_config_no_auth run-p --race start test:cmd: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",
|
"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: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",
|
"db:script:reset": "wait-on tcp:4001 && babel-node src/seed/reset-db.js",
|
||||||
@ -25,7 +25,9 @@
|
|||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"jest": {
|
"jest": {
|
||||||
"verbose": true,
|
"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": {
|
"dependencies": {
|
||||||
"apollo-cache-inmemory": "~1.3.11",
|
"apollo-cache-inmemory": "~1.3.11",
|
||||||
|
|||||||
@ -1,23 +1,8 @@
|
|||||||
import { request } from 'graphql-request'
|
import { request } from 'graphql-request'
|
||||||
import createServer from './server'
|
|
||||||
import mocks from './mocks'
|
|
||||||
import { create, cleanDatabase } from './seed/factories'
|
import { create, cleanDatabase } from './seed/factories'
|
||||||
import jwt from 'jsonwebtoken'
|
import jwt from 'jsonwebtoken'
|
||||||
|
|
||||||
let getHost
|
let getHost = () => 'http://127.0.0.1:3123'
|
||||||
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()
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('login', () => {
|
describe('login', () => {
|
||||||
const mutation = (params) => {
|
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