From 2b8f2f48c16f2584dcfd4fd0d93de4c74d6a9e09 Mon Sep 17 00:00:00 2001 From: Rob Scanlon Date: Sat, 9 Mar 2013 02:08:20 -0500 Subject: [PATCH 1/3] Delete task for the API --- src/server/api.coffee | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/server/api.coffee b/src/server/api.coffee index 6bdc0699c4..f337b4964b 100644 --- a/src/server/api.coffee +++ b/src/server/api.coffee @@ -60,7 +60,7 @@ validateTask = (req, res, next) -> newTask = { type, text, notes, value, up, down, completed } = req.body # If we're updating, get the task from the user - if req.method is 'PUT' + if req.method is 'PUT' or req.method is 'DELETE' task = req.userObj?.tasks[req.params.id] return res.json 400, err: "No task found." if !task || _.isEmpty(task) # Strip for now @@ -90,6 +90,14 @@ router.put '/user/task/:id', auth, validateTask, (req, res) -> res.json 200, req.task +router.delete '/user/task/:id', auth, validateTask, (req, res) -> + taskIds = req.user.get("#{req.task.type}Ids") + taskIds.splice(taskIds.indexOf(req.task.id),1) + req.user.set "#{req.task.type}Ids", taskIds + req.user.del "tasks.#{req.task.id}" + + res.send 204 + router.post '/user/task', auth, validateTask, (req, res) -> task = req.task type = task.type From 2111cca09a8ee2ddebceb03f63fb92aa04bd16cc Mon Sep 17 00:00:00 2001 From: Rob Scanlon Date: Sat, 9 Mar 2013 02:08:50 -0500 Subject: [PATCH 2/3] Delete task for the API tests --- test/api.mocha.coffee | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/test/api.mocha.coffee b/test/api.mocha.coffee index 4b0adfebe5..eed81aedac 100644 --- a/test/api.mocha.coffee +++ b/test/api.mocha.coffee @@ -245,3 +245,29 @@ describe 'API', -> # Ensure that the two sets are equal expect(_.difference(_.pluck(res.body,'id'), _.pluck(tasks,'id')).length).to.equal 0 done() + + it 'DELETE /api/v1/user/task/:id', (done) -> + tid = currentUser.habitIds[2] + request.del("#{baseURL}/user/task/#{tid}") + .set('Accept', 'application/json') + .set('X-API-User', currentUser.id) + .set('X-API-Key', currentUser.apiToken) + .end (res) -> + expect(res.body.err).to.be undefined + expect(res.statusCode).to.be 204 + query = model.query('users').withIdAndToken(currentUser.id, currentUser.apiToken) + query.fetch (err, user) -> + expect(user.get().habitIds.indexOf(tid)).to.be -1 + expect(user.get().tasks[tid]).to.be undefined + done() + + it 'DELETE /api/v1/user/task/:id (no task found)', (done) -> + tid = "adsfasdfjunkshouldntbeatask" + request.del("#{baseURL}/user/task/#{tid}") + .set('Accept', 'application/json') + .set('X-API-User', currentUser.id) + .set('X-API-Key', currentUser.apiToken) + .end (res) -> + expect(res.statusCode).to.be 400 + expect(res.body.err).to.be 'No task found.' + done() From 188e4ff2710464386b672afc54722506aba412aa Mon Sep 17 00:00:00 2001 From: Daniel Saewitz Date: Sat, 9 Mar 2013 09:14:07 -0500 Subject: [PATCH 3/3] Remove one id from array of typeIds instead of rewriting whole array --- src/server/api.coffee | 8 ++++---- test/api.mocha.coffee | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/server/api.coffee b/src/server/api.coffee index f337b4964b..4c2fa2984a 100644 --- a/src/server/api.coffee +++ b/src/server/api.coffee @@ -91,10 +91,11 @@ router.put '/user/task/:id', auth, validateTask, (req, res) -> res.json 200, req.task router.delete '/user/task/:id', auth, validateTask, (req, res) -> - taskIds = req.user.get("#{req.task.type}Ids") - taskIds.splice(taskIds.indexOf(req.task.id),1) - req.user.set "#{req.task.type}Ids", taskIds + taskIds = req.user.get "#{req.task.type}Ids" + req.user.del "tasks.#{req.task.id}" + # Remove one id from array of typeIds + req.user.remove "#{req.task.type}Ids", taskIds.indexOf(req.task.id), 1 res.send 204 @@ -164,4 +165,3 @@ router.post '/user/tasks/:taskId/:direction', auth, scoreTask module.exports = router module.exports.auth = auth module.exports.scoreTask = scoreTask # export so deprecated can call it - diff --git a/test/api.mocha.coffee b/test/api.mocha.coffee index eed81aedac..0d01854733 100644 --- a/test/api.mocha.coffee +++ b/test/api.mocha.coffee @@ -257,8 +257,8 @@ describe 'API', -> expect(res.statusCode).to.be 204 query = model.query('users').withIdAndToken(currentUser.id, currentUser.apiToken) query.fetch (err, user) -> - expect(user.get().habitIds.indexOf(tid)).to.be -1 - expect(user.get().tasks[tid]).to.be undefined + expect(user.get('habitIds').indexOf(tid)).to.be -1 + expect(user.get("tasks.#{tid}")).to.be undefined done() it 'DELETE /api/v1/user/task/:id (no task found)', (done) ->