From 3539d66d5067cb3b675dd4325bf8712c4d0c2d8c Mon Sep 17 00:00:00 2001 From: Adrian Obelmejias Date: Fri, 18 Mar 2016 23:14:57 -0400 Subject: [PATCH] Use `getUser` as middleware for code reuse --- src/modules/users/controller.js | 47 ++++++++++----------------------- src/modules/users/router.js | 2 ++ test/users.spec.js | 10 ++++++- 3 files changed, 25 insertions(+), 34 deletions(-) diff --git a/src/modules/users/controller.js b/src/modules/users/controller.js index ddecff1..86712a0 100644 --- a/src/modules/users/controller.js +++ b/src/modules/users/controller.js @@ -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 } } diff --git a/src/modules/users/router.js b/src/modules/users/router.js index 5ac210f..f03aed9 100644 --- a/src/modules/users/router.js +++ b/src/modules/users/router.js @@ -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 ] } diff --git a/test/users.spec.js b/test/users.spec.js index b07e38e..99931ce 100644 --- a/test/users.spec.js +++ b/test/users.spec.js @@ -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() + }) }) })