diff --git a/app/templates/Gruntfile.js b/app/templates/Gruntfile.js index c9d5568aa..a287531d3 100644 --- a/app/templates/Gruntfile.js +++ b/app/templates/Gruntfile.js @@ -484,7 +484,8 @@ module.exports = function (grunt) { mochaTest: { options: { reporter: 'spec', - require: 'mocha.conf.js' + require: 'mocha.conf.js', + timeout: 5000 // set default mocha spec timeout }, unit: { src: ['server/**/*.spec.js'] diff --git a/app/templates/karma.conf.js b/app/templates/karma.conf.js index 5b45e4f86..9b46a3a22 100644 --- a/app/templates/karma.conf.js +++ b/app/templates/karma.conf.js @@ -8,7 +8,13 @@ module.exports = function(config) { // testing framework to use (jasmine/mocha/qunit/...)<% if (filters.jasmine) { %> frameworks: ['jasmine'],<% } if (filters.mocha) { %> - frameworks: ['mocha', 'chai', 'sinon-chai', 'chai-as-promised', 'chai-things'],<% } %> + frameworks: ['mocha', 'chai', 'sinon-chai', 'chai-as-promised', 'chai-things'], + + client: { + mocha: { + timeout: 5000 // set default mocha spec timeout + } + },<% } %> // list of files / patterns to load in the browser files: [ diff --git a/app/templates/mocha.conf.js b/app/templates/mocha.conf.js index 6b1504e9c..76f56625e 100644 --- a/app/templates/mocha.conf.js +++ b/app/templates/mocha.conf.js @@ -1,7 +1,7 @@ -'use strict';<% if(filters.babel) { %> +'use strict'; // Register the Babel require hook -require('babel-core/register');<% } %> +require('babel-core/register'); var chai = require('chai'); diff --git a/endpoint/templates/basename.model.spec(mongooseModels).js b/endpoint/templates/basename.model.spec(mongooseModels).js new file mode 100644 index 000000000..58fc61165 --- /dev/null +++ b/endpoint/templates/basename.model.spec(mongooseModels).js @@ -0,0 +1,34 @@ +'use strict'; + +var app = require('../../app'); +var <%= classedName %> = require('./<%= basename %>.model'); +var <%= cameledName %>; +var gen<%= classedName %> = function() { + <%= cameledName %> = new <%= classedName %>({ + name: 'Fake <%= classedName %>', + info: 'some info', + active: true + }); + return <%= cameledName %>; +}; + +describe('<%= classedName %> Model', function() { + before(function() { + // Clear <%= basename %>s before testing + return <%= classedName %>.find({}).removeAsync(); + }); + + beforeEach(function() { + gen<%= classedName %>(); + }); + + afterEach(function() { + return <%= classedName %>.find({}).removeAsync(); + }); + + it('should begin with no <%= basename %>s', function() { + return <%= classedName %>.findAsync({}) + .should.eventually.have.length(0); + }); + +}); diff --git a/endpoint/templates/basename.model.spec(sequelizeModels).js b/endpoint/templates/basename.model.spec(sequelizeModels).js new file mode 100644 index 000000000..43d2a27ad --- /dev/null +++ b/endpoint/templates/basename.model.spec(sequelizeModels).js @@ -0,0 +1,35 @@ +'use strict'; + +var app = require('../../app'); +var <%= classedName %> = require('../../sqldb').<%= classedName %>; +var <%= cameledName %>; +var gen<%= classedName %> = function() { + <%= cameledName %> = <%= classedName %>.build({ + name: 'Fake <%= classedName %>', + info: 'some info', + active: true + }); + return <%= cameledName %>; +}; + +describe('<%= classedName %> Model', function() { + before(function() { + // Sync and clear <%= basename %>s before testing + return <%= classedName %>.sync().then(function() { + return <%= classedName %>.destroy({ where: {} }); + }); + }); + + beforeEach(function() { + gen<%= classedName %>(); + }); + + afterEach(function() { + return <%= classedName %>.destroy({ where: {} }); + }); + + it('should begin with no <%= basename %>s', function() { + return <%= classedName %>.findAll() + .should.eventually.have.length(0); + }); +}); diff --git a/test/test-file-creation.js b/test/test-file-creation.js index fb0fb2b91..4c0c4e4f5 100644 --- a/test/test-file-creation.js +++ b/test/test-file-creation.js @@ -237,6 +237,7 @@ describe('angular-fullstack generator', function () { files = files.concat([ 'server/api/thing/thing.model.js', 'server/api/thing/thing.events.js', + 'server/api/thing/thing.model.spec.js', 'server/config/seed.js' ]); }