Skip to content
This repository was archived by the owner on Feb 8, 2024. It is now read-only.

Commit edd082f

Browse files
committed
test(createrest-express): Add tests for server answer
1 parent ae871e7 commit edd082f

4 files changed

Lines changed: 86 additions & 10 deletions

File tree

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
{
22
"rules": {
33
"import/no-extraneous-dependencies": "off",
4-
"no-magic-numbers": "off"
4+
"no-magic-numbers": "off",
5+
"no-restricted-syntax": "off",
6+
"no-await-in-loop": "off"
57
}
68
}

packages/createrest-express/test/index.test.js

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,11 @@
11
import test from 'ava'
2-
import express from 'express'
32
import supertest from 'supertest'
43
import sinon from 'sinon'
54
import { createRest } from 'createrest'
65
import { createExpressMiddleware } from '../lib'
6+
import { createRawServer } from './utils'
77

88

9-
let port = 4000
10-
11-
function createRawServer(routesFn) {
12-
const app = express()
13-
app.use(createExpressMiddleware(createRest(routesFn)))
14-
return app.listen(port++)
15-
}
16-
179
const newSpy = () => ({
1810
get: sinon.stub().callsFake((req, res) => res.send({})),
1911
post: sinon.stub().callsFake((req, res) => res.send({})),
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
import test from 'ava'
2+
import supertest from 'supertest'
3+
import { createRawServer } from './utils'
4+
5+
6+
const newAnswer = () => ({
7+
sampleJSON: data => (req, res) => {
8+
res.send({ data })
9+
},
10+
})
11+
12+
test('response from base methods', async (t) => {
13+
t.plan(5 * 2)
14+
const answer = newAnswer()
15+
const server = createRawServer((root) => {
16+
root.get('/', answer.sampleJSON('get'))
17+
root.post('/', answer.sampleJSON('post'))
18+
root.put('/', answer.sampleJSON('put'))
19+
root.patch('/', answer.sampleJSON('patch'))
20+
root.delete('/', answer.sampleJSON('delete'))
21+
})
22+
23+
for (const method of ['get', 'post', 'put', 'patch', 'delete']) {
24+
const res = await supertest(server)[method]('/')
25+
.expect('Content-Type', /json/)
26+
27+
t.is(res.status, 200)
28+
t.is(res.body.data, method)
29+
}
30+
})
31+
32+
test('crud', async (t) => {
33+
const CrudCtrl = {
34+
beforeEach(req, res, next) {
35+
res.data = { mdw: 1 }; next()
36+
},
37+
afterEach(req, res) {
38+
res.data.mdw++
39+
res.send(res.data)
40+
},
41+
read(req, res, next) {
42+
res.data.type = 'get'
43+
next()
44+
},
45+
create(req, res, next) {
46+
res.data.type = 'post'
47+
next()
48+
},
49+
update(req, res, next) {
50+
res.data.type = 'put'
51+
next()
52+
},
53+
destroy(req, res, next) {
54+
res.data.type = 'delete'
55+
next()
56+
},
57+
}
58+
const server = createRawServer((root) => {
59+
root.crud('demo', CrudCtrl)
60+
})
61+
62+
for (const method of ['get', 'post', 'put', 'delete']) {
63+
const res = await supertest(server)[method]('/demo')
64+
.expect('Content-Type', /json/)
65+
66+
t.is(res.status, 200)
67+
t.is(res.body.mdw, 2)
68+
t.is(res.body.type, method)
69+
}
70+
})
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import express from 'express'
2+
import { createRest } from 'createrest'
3+
import { createExpressMiddleware } from '../lib'
4+
5+
6+
let port = 6000 + Math.floor(Math.random() * 1000)
7+
8+
export function createRawServer(routesFn) {
9+
const app = express()
10+
app.use(createExpressMiddleware(createRest(routesFn)))
11+
return app.listen(port++)
12+
}

0 commit comments

Comments
 (0)