From 99a57051a0f210a71e6324338615cc7d243923a5 Mon Sep 17 00:00:00 2001 From: David Mohr Date: Thu, 17 Dec 2015 08:34:11 +1100 Subject: [PATCH] fix(mocha): have tests clean up once complete mocha unit and integration tests will hang unless express (and optionally mongoose) are closed once the tests are complete --- app/templates/server/api/user(auth)/user.integration.js | 7 +++++-- .../api/user(auth)/user.model.spec(mongooseModels).js | 6 ++++++ app/templates/server/app.js | 2 +- endpoint/templates/basename.integration.js | 4 ++++ 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/app/templates/server/api/user(auth)/user.integration.js b/app/templates/server/api/user(auth)/user.integration.js index 82ffd27aa..8d6680c2e 100644 --- a/app/templates/server/api/user(auth)/user.integration.js +++ b/app/templates/server/api/user(auth)/user.integration.js @@ -1,7 +1,8 @@ 'use strict'; import app from '../..';<% if (filters.mongooseModels) { %> -import User from './user.model';<% } %><% if (filters.sequelizeModels) { %> +import User from './user.model'; +import mongoose from 'mongoose';<% } %><% if (filters.sequelizeModels) { %> import {User} from '../../sqldb';<% } %> import request from 'supertest'; @@ -26,7 +27,9 @@ describe('User API:', function() { // Clear users after testing after(function() { - <% if (filters.mongooseModels) { %>return User.removeAsync();<% } + app.angularFullstack.close(); + <% if (filters.mongooseModels) { %>User.remove(); + mongoose.connection.close();<% } if (filters.sequelizeModels) { %>return User.destroy({ where: {} });<% } %> }); diff --git a/app/templates/server/api/user(auth)/user.model.spec(mongooseModels).js b/app/templates/server/api/user(auth)/user.model.spec(mongooseModels).js index 4cff951fd..c369258ae 100644 --- a/app/templates/server/api/user(auth)/user.model.spec(mongooseModels).js +++ b/app/templates/server/api/user(auth)/user.model.spec(mongooseModels).js @@ -1,6 +1,7 @@ 'use strict'; import app from '../..'; +import mongoose from 'mongoose'; import User from './user.model'; var user; var genUser = function() { @@ -27,6 +28,11 @@ describe('User Model', function() { return User.removeAsync(); }); + after(function() { + app.angularFullstack.close(); + mongoose.connection.close(); + }); + it('should begin with no users', function() { return <%= expect() %>User.findAsync({})<%= to() %> .eventually.have.length(0); diff --git a/app/templates/server/app.js b/app/templates/server/app.js index 20d4aefe8..c3e2eaefe 100644 --- a/app/templates/server/app.js +++ b/app/templates/server/app.js @@ -34,7 +34,7 @@ require('./routes')(app); // Start server function startServer() { - server.listen(config.port, config.ip, function() { + app.angularFullstack = server.listen(config.port, config.ip, function() { console.log('Express server listening on %d, in %s mode', config.port, app.get('env')); }); } diff --git a/endpoint/templates/basename.integration.js b/endpoint/templates/basename.integration.js index f805e2397..95ce01ac8 100644 --- a/endpoint/templates/basename.integration.js +++ b/endpoint/templates/basename.integration.js @@ -7,6 +7,10 @@ var new<%= classedName %>;<% } %> describe('<%= classedName %> API:', function() { + after(function() { + app.angularFullstack.close(); + }); + describe('GET <%= route %>', function() { var <%= cameledName %>s;