diff --git a/app.js b/app.js index ba813f8..d86f765 100644 --- a/app.js +++ b/app.js @@ -12,7 +12,8 @@ var articleRouter = require('./routes/article'); var connect = mongoose.connect(process.env.DB_URL,{ autoIndex: false, useNewUrlParser: true, - useUnifiedTopology: true + useUnifiedTopology: true, + useFindAndModify: false }); connect.then((db) => { diff --git a/routes/article.js b/routes/article.js index 5111091..79ce66c 100644 --- a/routes/article.js +++ b/routes/article.js @@ -74,6 +74,10 @@ router.route('/') .put((req, res, next) => { res.statusCode = 403; res.end('PUT operation not supported on /article'); + }) + .delete((req, res, next) => { + res.statusCode = 403; + res.end('DELETE operation not supported on /article'); }); @@ -136,7 +140,23 @@ router.route('/:articleId') }, (err) => next(err)) .catch((err) => next(err)); } - else{ + else { + var err = new Error('Article ' + req.params.articleId + ' not found'); + err.status = 404; + return next(err); + } + }) + .delete((req, res, next) => { + if (mongoose.Types.ObjectId.isValid(req.params.articleId)) { + Article.findByIdAndRemove(req.params.articleId) + .then((resp) => { + res.statusCode = 200; + res.setHeader('Content-Type', 'application/json'); + res.json(resp); + }, (err) => next(err)) + .catch((err) => next(err)); + } + else { var err = new Error('Article ' + req.params.articleId + ' not found'); err.status = 404; return next(err); diff --git a/test/routes/article.test.js b/test/routes/article.test.js index 8f9dd88..61b6340 100644 --- a/test/routes/article.test.js +++ b/test/routes/article.test.js @@ -41,7 +41,7 @@ describe("Test POST /article/:articleId", () => { .then(response => { expect(response.statusCode).toBe(200); const articles = JSON.parse(response.text); - if (articles && article.length) { + if (articles && articles.length) { request(app) .get("/article/"+articles[0]._id) .then(response => { @@ -65,7 +65,7 @@ describe("Test PUT /article/:articleId", () => { expect(response.statusCode).toBe(200); const articles = JSON.parse(response.text); - if (articles && article.length) { + if (articles && articles.length) { let art=articles[0], newTitle='Test: Hello test world'; @@ -86,4 +86,29 @@ describe("Test PUT /article/:articleId", () => { } }); }); +}); + +/* DELETE /article/:artId */ +describe("Test DELETE /article/:articleId", () => { + test("It should response 200 on DELETE method", done => { + request(app) + .get("/article") + .then(response => { + expect(response.statusCode).toBe(200); + + const articles = JSON.parse(response.text); + if (articles && articles.length) { + let artId=articles[0]._id; + request(app) + .delete("/article/"+artId) + .then(resp => { + expect(resp.statusCode).toBe(200); + done(); + }); + } + else { + done(); + } + }); + }); }); \ No newline at end of file