TwoToc code
[YouAndWeb_TwoToc] / server / api / message / message.integration.js
diff --git a/server/api/message/message.integration.js b/server/api/message/message.integration.js
new file mode 100755 (executable)
index 0000000..2a38250
--- /dev/null
@@ -0,0 +1,147 @@
+'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();
+        });
+    });
+
+  });
+
+});