--- /dev/null
+'use strict';
+
+var app = require('../..');
+var request = require('supertest');
+
+var newMessage;
+
+describe('Message API:', function() {
+
+ describe('GET /api/test', function() {
+ var messages;
+
+ beforeEach(function(done) {
+ request(app)
+ .get('/api/test')
+ .expect(200)
+ .expect('Content-Type', /json/)
+ .end(function(err, res) {
+ if (err) {
+ return done(err);
+ }
+ messages = res.body;
+ done();
+ });
+ });
+
+ it('should respond with JSON array', function() {
+ messages.should.be.instanceOf(Array);
+ });
+
+ });
+
+ describe('POST /api/test', function() {
+ beforeEach(function(done) {
+ request(app)
+ .post('/api/test')
+ .send({
+ name: 'New Message',
+ info: 'This is the brand new message!!!'
+ })
+ .expect(201)
+ .expect('Content-Type', /json/)
+ .end(function(err, res) {
+ if (err) {
+ return done(err);
+ }
+ newMessage = res.body;
+ done();
+ });
+ });
+
+ it('should respond with the newly created message', function() {
+ newMessage.name.should.equal('New Message');
+ newMessage.info.should.equal('This is the brand new message!!!');
+ });
+
+ });
+
+ describe('GET /api/test/:id', function() {
+ var message;
+
+ beforeEach(function(done) {
+ request(app)
+ .get('/api/test/' + newMessage._id)
+ .expect(200)
+ .expect('Content-Type', /json/)
+ .end(function(err, res) {
+ if (err) {
+ return done(err);
+ }
+ message = res.body;
+ done();
+ });
+ });
+
+ afterEach(function() {
+ message = {};
+ });
+
+ it('should respond with the requested message', function() {
+ message.name.should.equal('New Message');
+ message.info.should.equal('This is the brand new message!!!');
+ });
+
+ });
+
+ describe('PUT /api/test/:id', function() {
+ var updatedMessage
+
+ beforeEach(function(done) {
+ request(app)
+ .put('/api/test/' + newMessage._id)
+ .send({
+ name: 'Updated Message',
+ info: 'This is the updated message!!!'
+ })
+ .expect(200)
+ .expect('Content-Type', /json/)
+ .end(function(err, res) {
+ if (err) {
+ return done(err);
+ }
+ updatedMessage = res.body;
+ done();
+ });
+ });
+
+ afterEach(function() {
+ updatedMessage = {};
+ });
+
+ it('should respond with the updated message', function() {
+ updatedMessage.name.should.equal('Updated Message');
+ updatedMessage.info.should.equal('This is the updated message!!!');
+ });
+
+ });
+
+ describe('DELETE /api/test/:id', function() {
+
+ it('should respond with 204 on successful removal', function(done) {
+ request(app)
+ .delete('/api/test/' + newMessage._id)
+ .expect(204)
+ .end(function(err, res) {
+ if (err) {
+ return done(err);
+ }
+ done();
+ });
+ });
+
+ it('should respond with 404 when message does not exist', function(done) {
+ request(app)
+ .delete('/api/test/' + newMessage._id)
+ .expect(404)
+ .end(function(err, res) {
+ if (err) {
+ return done(err);
+ }
+ done();
+ });
+ });
+
+ });
+
+});