Skip to content

Commit

Permalink
Merge pull request #29 from olusoladavid/ft-delete-one-entry-159328809
Browse files Browse the repository at this point in the history
#159328809 Create DELETE /entries/:id endpoint
  • Loading branch information
olusoladavid committed Aug 2, 2018
2 parents 17725c9 + 774e0e4 commit 01f6936
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 0 deletions.
28 changes: 28 additions & 0 deletions server/controllers/entryController.js
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,34 @@ class entryController {
},
);
}

/**
* @description Deletes a single user entry by id
*
* @static
* @param {*} req - Request object with param 'id'
* @param {*} res - Response object
* @memberof entryController
*/
static deleteEntry(req, res) {
query(
`DELETE FROM entries
USING users
WHERE entries.user_id=users.id
AND users.email=$1
AND entries.id=$2`, [req.authorizedUser.email, req.params.id],
(err, result) => {
if (err) {
console.log(err);
return res.status(500).json({ error: { message: 'An error occurred on the server' } });
}
if (!result.rowCount) {
return res.status(404).json({ error: { message: 'Entry not found' } });
}
return res.status(204).json();
},
);
}
}

export default entryController;
4 changes: 4 additions & 0 deletions server/routes/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,8 @@ router.get('/entries/:id', verifyToken, entryController.getEntry);
/* PUT new data in existing entry */
router.put('/entries/:id', verifyToken, validate.modifyEntry, entryController.modifyEntry);

/* DELETE a single entry */
router.delete('/entries/:id', verifyToken, entryController.deleteEntry);


export default router;
41 changes: 41 additions & 0 deletions test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -333,3 +333,44 @@ describe('/PUT entries', () => {
});
});
});

describe('/DELETE/:id entries', () => {
it('should return 401 unauthorized error when passed an invalid or expired token', (done) => {
chai
.request(app)
.delete(`/api/v1/entries/${cachedEntry.id}`)
.set('Authorization', makeAuthHeader(sampleData.invalidToken))
.end((err, res) => {
expect(res).to.have.status(401);
expect(res.body).to.be.an('object');
expect(res.body).to.be.have.property('error');
done();
});
});

it('should delete a single user entry with specified existing id when passed a valid token', (done) => {
chai
.request(app)
// Set the Authorization header
.delete(`/api/v1/entries/${cachedEntry.id}`)
.set('Authorization', makeAuthHeader(token))
.end((err, res) => {
expect(res).to.have.status(204);
done();
});
});

it('should return a 404 not found error when passed an invalid entry id and a valid token', (done) => {
chai
.request(app)
// Set the Authorization header
.delete(`/api/v1/entries/${sampleData.invalidEntryId}`)
.set('Authorization', makeAuthHeader(token))
.end((err, res) => {
expect(res).to.have.status(404);
expect(res.body).to.be.an('object');
expect(res.body).to.be.have.property('error');
done();
});
});
});

0 comments on commit 01f6936

Please sign in to comment.