// 'use strict'; // var should = require('should'), // request = require('supertest'), // app = require('../../server'), // mongoose = require('mongoose'), // User = mongoose.model('User'), // Article = mongoose.model('Article'), // agent = request.agent(app); // /** // * Globals // */ // var credentials, user, article; // /** // * Article routes tests // */ // describe('Article CRUD tests', function() { // beforeEach(function(done) { // // Create user credentials // credentials = { // username: 'username', // password: 'password' // }; // // Create a new user // user = new User({ // firstName: 'Full', // lastName: 'Name', // displayName: 'Full Name', // email: 'test@test.com', // username: credentials.username, // password: credentials.password, // provider: 'local' // }); // // Save a user to the test db and create new article // user.save(function() { // article = { // title: 'Article Title', // content: 'Article Content' // }; // done(); // }); // }); // it('should be able to save an article if logged in', function(done) { // agent.post('/auth/signin') // .send(credentials) // .expect(200) // .end(function(signinErr, signinRes) { // // Handle signin error // if (signinErr) done(signinErr); // // Get the userId // var userId = user.id; // // Save a new article // agent.post('/articles') // .send(article) // .expect(200) // .end(function(articleSaveErr, articleSaveRes) { // // Handle article save error // if (articleSaveErr) done(articleSaveErr); // // Get a list of articles // agent.get('/articles') // .end(function(articlesGetErr, articlesGetRes) { // // Handle article save error // if (articlesGetErr) done(articlesGetErr); // // Get articles list // var articles = articlesGetRes.body; // // Set assertions // (articles[0].user._id).should.equal(userId); // (articles[0].title).should.match('Article Title'); // // Call the assertion callback // done(); // }); // }); // }); // }); // it('should not be able to save an article if not logged in', function(done) { // agent.post('/articles') // .send(article) // .expect(401) // .end(function(articleSaveErr, articleSaveRes) { // // Call the assertion callback // done(articleSaveErr); // }); // }); // it('should not be able to save an article if no title is provided', function(done) { // // Invalidate title field // article.title = ''; // agent.post('/auth/signin') // .send(credentials) // .expect(200) // .end(function(signinErr, signinRes) { // // Handle signin error // if (signinErr) done(signinErr); // // Get the userId // var userId = user.id; // // Save a new article // agent.post('/articles') // .send(article) // .expect(400) // .end(function(articleSaveErr, articleSaveRes) { // // Set message assertion // (articleSaveRes.body.message).should.match('Title cannot be blank'); // // Handle article save error // done(articleSaveErr); // }); // }); // }); // it('should be able to update an article if signed in', function(done) { // agent.post('/auth/signin') // .send(credentials) // .expect(200) // .end(function(signinErr, signinRes) { // // Handle signin error // if (signinErr) done(signinErr); // // Get the userId // var userId = user.id; // // Save a new article // agent.post('/articles') // .send(article) // .expect(200) // .end(function(articleSaveErr, articleSaveRes) { // // Handle article save error // if (articleSaveErr) done(articleSaveErr); // // Update article title // article.title = 'WHY YOU GOTTA BE SO MEAN?'; // // Update an existing article // agent.put('/articles/' + articleSaveRes.body._id) // .send(article) // .expect(200) // .end(function(articleUpdateErr, articleUpdateRes) { // // Handle article update error // if (articleUpdateErr) done(articleUpdateErr); // // Set assertions // (articleUpdateRes.body._id).should.equal(articleSaveRes.body._id); // (articleUpdateRes.body.title).should.match('WHY YOU GOTTA BE SO MEAN?'); // // Call the assertion callback // done(); // }); // }); // }); // }); // it('should be able to get a list of articles if not signed in', function(done) { // // Create new article model instance // var articleObj = new Article(article); // // Save the article // articleObj.save(function() { // // Request articles // request(app).get('/articles') // .end(function(req, res) { // // Set assertion // res.body.should.be.an.Array.with.lengthOf(1); // // Call the assertion callback // done(); // }); // }); // }); // it('should be able to get a single article if not signed in', function(done) { // // Create new article model instance // var articleObj = new Article(article); // // Save the article // articleObj.save(function() { // request(app).get('/articles/' + articleObj._id) // .end(function(req, res) { // // Set assertion // res.body.should.be.an.Object.with.property('title', article.title); // // Call the assertion callback // done(); // }); // }); // }); // it('should return proper error for single article which doesnt exist, if not signed in', function(done) { // request(app).get('/articles/test') // .end(function(req, res) { // // Set assertion // res.body.should.be.an.Object.with.property('message', 'Article is invalid'); // // Call the assertion callback // done(); // }); // }); // it('should be able to delete an article if signed in', function(done) { // agent.post('/auth/signin') // .send(credentials) // .expect(200) // .end(function(signinErr, signinRes) { // // Handle signin error // if (signinErr) done(signinErr); // // Get the userId // var userId = user.id; // // Save a new article // agent.post('/articles') // .send(article) // .expect(200) // .end(function(articleSaveErr, articleSaveRes) { // // Handle article save error // if (articleSaveErr) done(articleSaveErr); // // Delete an existing article // agent.delete('/articles/' + articleSaveRes.body._id) // .send(article) // .expect(200) // .end(function(articleDeleteErr, articleDeleteRes) { // // Handle article error error // if (articleDeleteErr) done(articleDeleteErr); // // Set assertions // (articleDeleteRes.body._id).should.equal(articleSaveRes.body._id); // // Call the assertion callback // done(); // }); // }); // }); // }); // it('should not be able to delete an article if not signed in', function(done) { // // Set article user // article.user = user; // // Create new article model instance // var articleObj = new Article(article); // // Save the article // articleObj.save(function() { // // Try deleting article // request(app).delete('/articles/' + articleObj._id) // .expect(401) // .end(function(articleDeleteErr, articleDeleteRes) { // // Set message assertion // (articleDeleteRes.body.message).should.match('User is not logged in'); // // Handle article error error // done(articleDeleteErr); // }); // }); // }); // afterEach(function(done) { // User.remove().exec(function() { // Article.remove().exec(done); // }); // }); // });