Skip to content

Instantly share code, notes, and snippets.

@matthewtole
Last active December 12, 2015 02:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save matthewtole/4698265 to your computer and use it in GitHub Desktop.
Save matthewtole/4698265 to your computer and use it in GitHub Desktop.
var
// Node modules
mongoose = require('mongoose')
, async = require('async')
, should = require('should')
, User = require(__dirname + '/../models/user')
/**
* Mocha Test
*
* Tests are organized by having a "describe" and "it" method. Describe
* basically creates a "section" that you are testing and the "it" method
* is what runs your test code.
*
* For asynchronous tests you need to have a done method that you call after
* your code should be done executing so Mocha runs to test properly.
*/
describe('Users model', function () {
var
basicUserData
, connection
beforeEach(function (done) {
basicUserData = {
name: 'Bob Jones'
, email: 'bob@bobjones.com'
, username: 'Bob'
, provider: 'local'
, password: '123456'
, password_confirmation: '123456'
}
//user = new User(user)
// Connecting to a local test database or creating it on the fly
// TODO: Implement variable from config
connection = mongoose.connect('mongodb://localhost/reader_test').connection
connection.once('open', function () {
done()
})
})
afterEach(function (done) {
connection.close(function () {
done()
})
})
it('registers a new user', function (done) {
var user = new User(basicUserData)
user.validate(done)
})
it('returns fail with blank name', function (done) {
var user = new User(basicUserData)
user.name = ''
user.validate(function (err) {
if (err) {
return done()
}
done(new Error())
})
})
it('returns fail with blank username', function (done) {
var user = new User(basicUserData)
user.username = ''
user.validate(function (err) {
if (err) {
return done()
}
done(new Error())
})
})
it('invalidates invalid password', function (done) {
var user = new User(basicUserData)
user.password = ''
user.validate(function (err) {
if (err) {
return done()
}
done(new Error())
})
})
it('validates valid email addresses', function (done) {
async.forEachSeries([
'oliverash@me.com',
'oliver.ash@me.com',
'oliver-ash@me.com',
'oliver+ash@me.com',
'oliver\'s-email@me.com'
], function (value, callback) {
var user = new User(basicUserData)
user.email = value
user.validate(callback)
}, done)
})
it('invalidates invalid email addresses', function (done) {
async.forEachSeries([
'@me.com',
'oliverash@me',
'oliver-ash@me',
'oliver.ash.me.com'
],
function (value, callback) {
var user = new User(basicUserData)
user.email = value
user.validate(function (err) {
if (!err) {
return callback(new Error())
}
callback()
})
}, done)
})
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment