Use getUser as middleware for code reuse

This commit is contained in:
Adrian Obelmejias
2016-03-18 23:14:57 -04:00
parent 16fa1ebd0a
commit 3539d66d50
3 changed files with 25 additions and 34 deletions
+14 -33
View File
@@ -24,10 +24,10 @@ export async function createUser(ctx) {
export async function getUsers(ctx) {
const users = await User.find({}, '-password -salt')
ctx.body = users
ctx.body = { users }
}
export async function getUser(ctx) {
export async function getUser(ctx, next) {
try {
const user = await User.findById(ctx.params.id, '-password -salt')
if (!user) {
@@ -44,48 +44,29 @@ export async function getUser(ctx) {
ctx.throw(500)
}
next()
}
export async function updateUser(ctx) {
try {
const user = await User.findById(ctx.params.id, '-password -salt')
if (!user) {
ctx.throw(404)
}
const user = ctx.body.user
Object.assign(user, ctx.request.body.user)
Object.assign(user, ctx.request.body.user)
await user.save()
ctx.body = {
user
}
} catch (err) {
if (err === 404 || err.name === 'CastError') {
ctx.throw(404)
}
await user.save()
ctx.throw(500)
ctx.body = {
user
}
}
export async function deleteUser(ctx) {
try {
const user = await User.findById(ctx.params.id)
if (!user) {
ctx.throw(404)
}
const user = ctx.body.user
await user.remove()
await user.remove()
ctx.status = 200
ctx.body = {
success: true
}
} catch (err) {
if (err === 404 || err.name === 'CastError') {
ctx.throw(404)
}
ctx.throw(500)
ctx.status = 200
ctx.body = {
sucess: true
}
}
+2
View File
@@ -32,6 +32,7 @@ export default [
route: '/:id',
handlers: [
ensureUser,
user.getUser,
user.updateUser
]
},
@@ -40,6 +41,7 @@ export default [
route: '/:id',
handlers: [
ensureUser,
user.getUser,
user.deleteUser
]
}
+9 -1
View File
@@ -56,7 +56,15 @@ describe('Users', () => {
request
.get(`/users?token=${token}`)
.set('Accept', 'application/json')
.expect(200, done)
.expect(200, (err, res) => {
if (err) { return done(err) }
res.body.should.have.property('users')
res.body.users.should.have.length(1)
done()
})
})
})