whitef0x0/tellform

View on GitHub
app/tests/user.server.model.test.js

Summary

Maintainability
A
0 mins
Test Coverage
'use strict';

/**
 * Module dependencies.
 */
var should = require('should'),
    mongoose = require('mongoose'),
    User = mongoose.model('User');

/**
 * Globals
 */
var user, user2;

/**
 * Unit tests
 */
describe('User Model Unit Tests:', function() {
    beforeEach(function(done) {
        user = new User({
            firstName: 'Full',
            lastName: 'Name',
            username: 'test',
            email: 'test@test.com',
            password: 'password',
            provider: 'local'
        });
        user2 = new User({
            firstName: 'Full',
            lastName: 'Name',
            username: 'test',
            email: 'test@test.com',
            password: 'password',
            provider: 'local'
        });

        done();
    });

    describe('Method Save', function() {
        it('should begin with no users', function(done) {
            User.find({}, function(err, users) {
                users.should.have.length(0);
                done();
            });
        });

        it('should be able to save without problems', function(done) {
            user.save(done);
        });

        it('should fail to save an existing user again', function(done) {
            user.save(function() {
                user2.save(function(err) {
                    should.exist(err);
                    done();
                });
            });
        });

        it('should be able to show an error when try to save without username', function(done) {
            user.username = '';
            user.save(function(err) {
                should.exist(err);
                done();
            });
        });
    });

    describe('Method findUniqueUsername', function() {
        beforeEach(function(done) {
            User.find({}, function(err, users) {
                users.should.have.length(0);
                user.save(done);
            });
        });

        it('should be able to find unique version of existing username without problems', function(done) {
            User.findUniqueUsername(user.username, null, function (availableUsername) {
                availableUsername.should.not.equal(user.username);
                done();
            });
        });

    });

    afterEach(function(done) {
        User.remove().exec(done);
    });
});