From abb0c51c7578e3ad30ab7a8375277a75f55d01b2 Mon Sep 17 00:00:00 2001 From: Madhusudhan Srinivasa Date: Tue, 24 Nov 2015 01:02:42 +0100 Subject: [PATCH] test changes --- .eslintrc | 5 ++ package.json | 1 - ...-users-create.js => _test-users-create.js} | 4 +- test/helper.js | 13 ++-- test/test-articles-create.js | 62 +++++++++++-------- 5 files changed, 48 insertions(+), 37 deletions(-) rename test/{test-users-create.js => _test-users-create.js} (95%) diff --git a/.eslintrc b/.eslintrc index b21fefa69..25ef26d67 100644 --- a/.eslintrc +++ b/.eslintrc @@ -11,6 +11,11 @@ "strict": [2, "global"], "quotes": [2, "single", "avoid-escape"], "semi": [2, "always"], + "space-before-function-paren": [2, "always"], + "space-after-keywords": [2, "always"], + "space-infix-ops": 2, + "spaced-comment": [2, "always"], + "arrow-spacing": 2, "no-console": 0 }, "globals": { diff --git a/package.json b/package.json index 55e703fe1..1c00bcef8 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,6 @@ "test": "NODE_ENV=test ./node_modules/.bin/ava --serial test/test-*.js" }, "dependencies": { - "async": "~1.5.0", "body-parser": "~1.14.1", "co-express": "~1.2.1", "compression": "~1.6.0", diff --git a/test/test-users-create.js b/test/_test-users-create.js similarity index 95% rename from test/test-users-create.js rename to test/_test-users-create.js index 2c55ca822..e7f0594ad 100644 --- a/test/test-users-create.js +++ b/test/_test-users-create.js @@ -11,7 +11,7 @@ const app = require('../server'); const cleanup = require('./helper').cleanup; const User = mongoose.model('User'); -test.beforeEach(t => cleanup(t.end)); +test.beforeEach(cleanup); test('no email - should respond with errors', t => { request(app) @@ -69,4 +69,4 @@ test('valid signup - should redirect to /', t => { }); }); -test.afterEach(t => cleanup(t.end)); +test.afterEach(cleanup); diff --git a/test/helper.js b/test/helper.js index 3850bae49..6002c1126 100644 --- a/test/helper.js +++ b/test/helper.js @@ -5,21 +5,18 @@ */ const mongoose = require('mongoose'); -const async = require('async'); const Article = mongoose.model('Article'); const User = mongoose.model('User'); /** * Clear database * - * @param {Function} done + * @param {Object} t * @api public */ -exports.cleanup = function (done) { - done = done || () => {}; - async.parallel([ - cb => User.collection.remove(cb), - cb => Article.collection.remove(cb) - ], done); +exports.cleanup = function* (t) { + yield User.remove(); + yield Article.remove(); + t.end(); }; diff --git a/test/test-articles-create.js b/test/test-articles-create.js index 008032948..44c0f5be9 100644 --- a/test/test-articles-create.js +++ b/test/test-articles-create.js @@ -11,16 +11,42 @@ const app = require('../server'); const cleanup = require('./helper').cleanup; const User = mongoose.model('User'); const Article = mongoose.model('Article'); -const agent = request.agent(app); const _user = { - email: 'foobar@example.com', + email: 'foo@email.com', name: 'Foo bar', username: 'foobar', password: 'foobar' }; -test.beforeEach(t => cleanup(t.end)); + +test.before(cleanup); +test.beforeEach(cleanup); + + +// user login +test.beforeEach(async t => { + const ctx = global.Promise.defer(); + const agent = request.agent(app); + const user = new User(_user); + + user.save().then(() => { + agent + .post('/users/session') + .field('email', _user.email) + .field('password', _user.password) + .expect('Location', '/') + .expect('Content-Type', /text/) + .end((err, res) => { + ctx.resolve(res.headers['set-cookie']); + }); + }); + + t.context.agent = agent; + t.context.cookie = await ctx.promise; + t.end(); +}); + test('POST /articles - when not logged in - should redirect to /login', t => { request(app) @@ -32,33 +58,17 @@ test('POST /articles - when not logged in - should redirect to /login', t => { .end(t.end); }); -// user login -test.before(async t => { - const user = new User(_user); - await user.save(); - - agent - .post('/users/session') - .field('email', _user.email) - .field('password', _user.password) - .expect('Location', '/') - .expect('Content-Type', /html/) - .end(err => { - console.log(err); - t.ifError(err); - t.end(err); - }); -}); test('POST /articles - invalid form - should respond with error', t => { - agent + t.context.agent .post('/articles') .field('title', '') .field('body', 'foo') + .set('cookie', t.context.cookie) .expect('Content-Type', /text/) .expect(302) .expect(/Article title cannot be blank/) - .end(async (err, res) => { + .end(async err => { const count = await Article.count().exec(); t.ifError(err); t.same(count, 0, 'Count should be 0'); @@ -66,11 +76,13 @@ test('POST /articles - invalid form - should respond with error', t => { }); }); + test('POST /articles - valid form - should redirect to the new article page', t => { - agent + t.context.agent .post('/articles') .field('title', 'foo') .field('body', 'bar') + .set('cookie', t.context.cookie) .expect('Content-Type', /plain/) .expect('Location', /\/articles\//) .expect(302) @@ -78,9 +90,7 @@ test('POST /articles - valid form - should redirect to the new article page', t .end(async err => { const count = await Article.count().exec(); t.ifError(err); - t.same(count, 1, 'Count should be 0'); + t.same(count, 1, 'Count should be 1'); t.end(); }); }); - -test.afterEach(t => cleanup(t.end));