Files
hiring-test-one/example/mock/mocks/users.js

33 lines
1.1 KiB
JavaScript
Raw Normal View History

2015-11-28 13:45:30 +00:00
const users = require('./users.json')
2015-11-27 21:54:33 +00:00
2015-11-28 13:45:30 +00:00
/* responses for /users */
2015-11-27 21:54:33 +00:00
const mockResponses = [
2015-11-30 12:59:18 +00:00
/* Respond with 400 Bad Request for PUT and DELETE - inappropriate on a collection */
2015-11-27 21:54:33 +00:00
{ request: { method: 'PUT' }, response: { status: 400 } },
{ request: { method: 'DELETE' }, response: { status: 400 } },
{
2015-11-30 12:59:18 +00:00
/* for GET requests return a subset of data, optionally filtered on 'minAge' and 'nationality' */
2015-11-27 21:54:33 +00:00
request: { method: 'GET' },
response: function (ctx) {
ctx.body = users.filter(user => {
2015-11-28 13:45:30 +00:00
const meetsMinAge = (user.age || 1000) >= (Number(ctx.query.minAge) || 0)
2015-11-27 21:54:33 +00:00
const requiredNationality = user.nationality === (ctx.query.nationality || user.nationality)
return meetsMinAge && requiredNationality
})
}
},
{
2015-11-30 12:59:18 +00:00
/* for POST requests, create a new user and return the path to the new resource */
2015-11-27 21:54:33 +00:00
request: { method: 'POST' },
response: function (ctx) {
const newUser = ctx.request.body
users.push(newUser)
newUser.id = users.length
ctx.status = 201
ctx.response.set('Location', `/users/${newUser.id}`)
}
}
]
module.exports = mockResponses