diff --git a/README.md b/README.md index 7157292..0c66cd7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Build Status](https://travis-ci.org/Billmike/event-center-api.svg?branch=master)](https://travis-ci.org/Billmike/event-center-api) [![Coverage Status](https://coveralls.io/repos/github/Billmike/event-center-api/badge.svg?branch=feature%2Fimplement-modify-center)](https://coveralls.io/github/Billmike/event-center-api?branch=feature%2Fimplement-modify-center) +[![Build Status](https://travis-ci.org/Billmike/event-center-api.svg?branch=master)](https://travis-ci.org/Billmike/event-center-api) [![Coverage Status](https://coveralls.io/repos/github/Billmike/event-center-api/badge.svg?branch=master)](https://coveralls.io/github/Billmike/event-center-api?branch=master) ### Simple CRUD API that manages your centers and events @@ -6,6 +6,10 @@ * Admin can create centers * Admin can edit center details * Users can sign up and sign-in +* Users can create events +* Users can modify events they own +* Users can delete events they own +* Users can get all events in the application ### Contributing Receiving no contributions at this time. diff --git a/server/controllers/event.js b/server/controllers/event.js index 6e359d0..973350a 100644 --- a/server/controllers/event.js +++ b/server/controllers/event.js @@ -93,6 +93,31 @@ class Events { }); }); } + static deleteEvent(request, response) { + Event.findById(request.params.eventId) + .then((event) => { + if (!event) { + return response.status(404).json({ + message: 'No event found.' + }); + } + if (event.organizer != request.userDetails.id) { + return response.status(401).json({ + message: 'You do not have the privilege to modify this resource' + }); + } + return event.destroy().then(() => { + response.status(200).json({ + message: 'Event successfully deleted.', + eventDetails: event + }); + }); + }).catch(() => { + return response.status(500).json({ + message: serverError + }); + }); + } } export default Events; diff --git a/server/routes/index.js b/server/routes/index.js index d1acf2c..941e5ae 100644 --- a/server/routes/index.js +++ b/server/routes/index.js @@ -34,4 +34,8 @@ module.exports = (app) => { sessionControl.isLoggedIn, sessionControl.isUser, eventController.modifyEvent ); + app.delete( + '/api/v1/event/:eventId', sessionControl.isLoggedIn, + sessionControl.isUser, eventController.deleteEvent + ); }; diff --git a/server/tests/event.test.js b/server/tests/event.test.js index 77d4e11..1796155 100644 --- a/server/tests/event.test.js +++ b/server/tests/event.test.js @@ -173,4 +173,40 @@ describe('Tests for Events API', () => { }); }); }); + describe('Delete event test', () => { + it('should throw an error if user is not logged in', (done) => { + request.delete('/api/v1/event/eventSeed.id') + .set('Connection', 'keep alive') + .set('Content-Type', 'application/json') + .type('form') + .end((error, response) => { + expect(response.status).to.equal(401); + done(); + }); + }); + it('should throw an error is no event is found', (done) => { + request.delete(`/api/v1/event/100?token=${secondDummyUser.token}`) + .set('Connection', 'keep alive') + .set('Content-Type', 'application/json') + .type('form') + .end((error, response) => { + expect(response.status).to.equal(404); + expect(response.body.message).to.equal('No event found.'); + done(); + }); + }); + it('should delete an event', (done) => { + request.delete(`/api/v1/event/${eventSeed + .id}?token=${secondDummyUser.token}`) + .set('Connection', 'keep alive') + .set('Content-Type', 'application/json') + .type('form') + .end((error, response) => { + expect(response.status).to.equal(200); + expect(response.body).to.be.an('object'); + expect(response.body.eventDetails).to.be.an('object'); + done(); + }); + }); + }); });