diff --git a/app/templates/_bower.json b/app/templates/_bower.json index e8c239de2..5798b8a73 100644 --- a/app/templates/_bower.json +++ b/app/templates/_bower.json @@ -2,23 +2,23 @@ "name": "<%= _.slugify(_.humanize(appname)) %>", "version": "0.0.0", "dependencies": { - "angular": "~1.2", + "angular": "~1.4.0", "json3": "~3.3.1", "es5-shim": "~3.0.1",<% if(filters.bootstrap) { %><% if (filters.sass) { %> "bootstrap-sass-official": "~3.1.1",<% } %> "bootstrap": "~3.1.1",<% } %> - "angular-resource": "~1.2", - "angular-cookies": "~1.2", - "angular-sanitize": "~1.2",<% if (filters.ngroute) { %> - "angular-route": "~1.2",<% } %><% if (filters.uibootstrap) { %> - "angular-bootstrap": "~0.11.0",<% } %> + "angular-resource": "~1.4.0", + "angular-cookies": "~1.4.0", + "angular-sanitize": "~1.4.0",<% if (filters.ngroute) { %> + "angular-route": "~1.4.0",<% } %><% if (filters.uibootstrap) { %> + "angular-bootstrap": "~0.13.0",<% } %> "font-awesome": ">=4.1.0", "lodash": "~2.4.1"<% if(filters.socketio) { %>, - "angular-socket-io": "~0.6.0"<% } %><% if(filters.uirouter) { %>, + "angular-socket-io": "~0.7.0"<% } %><% if(filters.uirouter) { %>, "angular-ui-router": "~0.2.15"<% } %> }, "devDependencies": { - "angular-mocks": "~1.2", - "angular-scenario": "~1.2" + "angular-mocks": "~1.4.0", + "angular-scenario": "~1.4.0" } } diff --git a/app/templates/_package.json b/app/templates/_package.json index 7e7bec125..bddb7de8f 100644 --- a/app/templates/_package.json +++ b/app/templates/_package.json @@ -64,11 +64,10 @@ "grunt-nodemon": "~0.2.0", "grunt-angular-templates": "^0.5.4", "grunt-dom-munger": "^3.4.0", - "grunt-protractor-runner": "^1.1.0", + "grunt-protractor-runner": "^2.0.0", "grunt-injector": "~0.5.4", - "grunt-karma": "~0.8.2", - "grunt-build-control": "~0.4.0", - "grunt-mocha-test": "~0.10.2",<% if(filters.sass) { %> + "grunt-karma": "~0.12.0", + "grunt-build-control": "~0.4.0",<% if(filters.sass) { %> "grunt-contrib-sass": "^0.7.3",<% } %><% if(filters.stylus) { %> "grunt-contrib-stylus": "latest",<% } %> "jit-grunt": "^0.5.0", @@ -78,28 +77,31 @@ "open": "~0.0.4", "jshint-stylish": "~0.1.5", "connect-livereload": "^0.5.3", - "grunt-mocha-test": "~0.10.2", - "grunt-mocha-istanbul": "^2.0.0", + "mocha": "^2.2.5", + "grunt-mocha-test": "~0.12.7", + "grunt-mocha-istanbul": "^2.4.0", "chai-as-promised": "^5.1.0", "chai-things": "^0.2.0", "sinon-chai": "^2.8.0",<% if (filters.mocha) { %> - "karma-mocha": "^0.1.9", + "karma-mocha": "^0.2.0", "karma-chai-plugins": "^0.6.0",<% } if (filters.jasmine) { %> - "karma-jasmine": "~0.1.5",<% } %> + "jasmine-core": "^2.3.4", + "karma-jasmine": "~0.3.0", + "jasmine-spec-reporter": "^2.4.0",<% } %> "karma-ng-scenario": "~0.1.0", - "karma-firefox-launcher": "~0.1.3", + "karma-firefox-launcher": "~0.1.6", "karma-script-launcher": "~0.1.0", "karma-html2js-preprocessor": "~0.1.0", - "karma-ng-jade2js-preprocessor": "^0.1.2", - "karma-chrome-launcher": "~0.1.3", + "karma-ng-jade2js-preprocessor": "^0.2.0", + "karma-chrome-launcher": "~0.2.0", "requirejs": "~2.1.11", - "karma-requirejs": "~0.2.1", - "karma-coffee-preprocessor": "~0.2.1", + "karma-requirejs": "~0.2.2", + "karma-coffee-preprocessor": "~0.3.0", "karma-jade-preprocessor": "0.0.11", - "karma-phantomjs-launcher": "~0.1.4", - "karma": "~0.12.9", - "karma-ng-html2js-preprocessor": "~0.1.0", - "karma-spec-reporter": "0.0.13", + "karma-phantomjs-launcher": "~0.2.0", + "karma": "~0.13.3", + "karma-ng-html2js-preprocessor": "~0.1.2", + "karma-spec-reporter": "~0.0.20", "proxyquire": "^1.0.1", "supertest": "~0.11.0" }, diff --git a/app/templates/e2e/account(auth)/login/login.spec(jasmine).js b/app/templates/e2e/account(auth)/login/login.spec(jasmine).js index 8b31d4d6b..6875376bc 100644 --- a/app/templates/e2e/account(auth)/login/login.spec(jasmine).js +++ b/app/templates/e2e/account(auth)/login/login.spec(jasmine).js @@ -8,7 +8,7 @@ describe('Login View', function() { var page; var loadPage = function() { - browser.get('/login'); + browser.get(config.baseUrl + '/login'); page = require('./login.po'); }; @@ -45,7 +45,7 @@ describe('Login View', function() { var navbar = require('../../components/navbar/navbar.po'); - expect(browser.getLocationAbsUrl()).toBe(config.baseUrl + '/'); + expect(browser.getCurrentUrl()).toBe(config.baseUrl + '/'); expect(navbar.navbarAccountGreeting.getText()).toBe('Hello ' + testUser.name); }); @@ -55,7 +55,7 @@ describe('Login View', function() { password: 'badPassword' }); - expect(browser.getLocationAbsUrl()).toBe(config.baseUrl + '/login'); + expect(browser.getCurrentUrl()).toBe(config.baseUrl + '/login'); var helpBlock = page.form.element(by.css('.form-group.has-error .help-block.ng-binding')); expect(helpBlock.getText()).toBe('This password is not correct.'); diff --git a/app/templates/e2e/account(auth)/login/login.spec(mocha).js b/app/templates/e2e/account(auth)/login/login.spec(mocha).js index 57222c1e4..a33970e67 100644 --- a/app/templates/e2e/account(auth)/login/login.spec(mocha).js +++ b/app/templates/e2e/account(auth)/login/login.spec(mocha).js @@ -8,7 +8,7 @@ describe('Login View', function() { var page; var loadPage = function() { - browser.get('/login'); + browser.get(config.baseUrl + '/login'); page = require('./login.po'); }; @@ -50,7 +50,7 @@ describe('Login View', function() { var navbar = require('../../components/navbar/navbar.po'); - <%= does("browser.getLocationAbsUrl()") %>.eventually.equal(config.baseUrl + '/'); + <%= does("browser.getCurrentUrl()") %>.eventually.equal(config.baseUrl + '/'); <%= does("navbar.navbarAccountGreeting.getText()") %>.eventually.equal('Hello ' + testUser.name); }); @@ -65,7 +65,7 @@ describe('Login View', function() { password: 'badPassword' }); - <%= does("browser.getLocationAbsUrl()") %>.eventually.equal(config.baseUrl + '/login'); + <%= does("browser.getCurrentUrl()") %>.eventually.equal(config.baseUrl + '/login'); var helpBlock = page.form.element(by.css('.form-group.has-error .help-block.ng-binding')); <%= does("helpBlock.getText()") %>.eventually.equal('This password is not correct.'); diff --git a/app/templates/e2e/account(auth)/logout/logout.spec(jasmine).js b/app/templates/e2e/account(auth)/logout/logout.spec(jasmine).js index fc10a1684..cb727f2c5 100644 --- a/app/templates/e2e/account(auth)/logout/logout.spec(jasmine).js +++ b/app/templates/e2e/account(auth)/logout/logout.spec(jasmine).js @@ -6,7 +6,7 @@ var UserModel = require(config.serverConfig.root + '/server/sqldb').User;<% } %> describe('Logout View', function() { var login = function(user) { - browser.get('/login'); + browser.get(config.baseUrl + '/login'); require('../login/login.po').login(user); }; @@ -34,14 +34,14 @@ describe('Logout View', function() { it('should logout a user and redirecting to "/"', function() { var navbar = require('../../components/navbar/navbar.po'); - expect(browser.getLocationAbsUrl()).toBe(config.baseUrl + '/'); + expect(browser.getCurrentUrl()).toBe(config.baseUrl + '/'); expect(navbar.navbarAccountGreeting.getText()).toBe('Hello ' + testUser.name); - browser.get('/logout'); + browser.get(config.baseUrl + '/logout'); navbar = require('../../components/navbar/navbar.po'); - expect(browser.getLocationAbsUrl()).toBe(config.baseUrl + '/'); + expect(browser.getCurrentUrl()).toBe(config.baseUrl + '/'); expect(navbar.navbarAccountGreeting.isDisplayed()).toBe(false); }); diff --git a/app/templates/e2e/account(auth)/logout/logout.spec(mocha).js b/app/templates/e2e/account(auth)/logout/logout.spec(mocha).js index 5268456de..1e969ccf2 100644 --- a/app/templates/e2e/account(auth)/logout/logout.spec(mocha).js +++ b/app/templates/e2e/account(auth)/logout/logout.spec(mocha).js @@ -6,7 +6,7 @@ var UserModel = require(config.serverConfig.root + '/server/sqldb').User;<% } %> describe('Logout View', function() { var login = function(user) { - browser.get('/login'); + browser.get(config.baseUrl + '/login'); require('../login/login.po').login(user); }; @@ -39,14 +39,14 @@ describe('Logout View', function() { it('should logout a user and redirecting to "/"', function() { var navbar = require('../../components/navbar/navbar.po'); - <%= does("browser.getLocationAbsUrl()") %>.eventually.equal(config.baseUrl + '/'); + <%= does("browser.getCurrentUrl()") %>.eventually.equal(config.baseUrl + '/'); <%= does("navbar.navbarAccountGreeting.getText()") %>.eventually.equal('Hello ' + testUser.name); - browser.get('/logout'); + browser.get(config.baseUrl + '/logout'); navbar = require('../../components/navbar/navbar.po'); - <%= does("browser.getLocationAbsUrl()") %>.eventually.equal(config.baseUrl + '/'); + <%= does("browser.getCurrentUrl()") %>.eventually.equal(config.baseUrl + '/'); <%= does("navbar.navbarAccountGreeting.isDisplayed()") %>.eventually.equal(false); }); diff --git a/app/templates/e2e/account(auth)/signup/signup.spec(jasmine).js b/app/templates/e2e/account(auth)/signup/signup.spec(jasmine).js index 1613d3ae8..e0a1230d5 100644 --- a/app/templates/e2e/account(auth)/signup/signup.spec(jasmine).js +++ b/app/templates/e2e/account(auth)/signup/signup.spec(jasmine).js @@ -8,7 +8,8 @@ describe('Signup View', function() { var page; var loadPage = function() { - browser.get('/signup'); + browser.manage().deleteAllCookies(); + browser.get(config.baseUrl + '/signup'); page = require('./signup.po'); }; @@ -35,24 +36,24 @@ describe('Signup View', function() { describe('with local auth', function() { - it('should signup a new user, log them in, and redirecting to "/"', function(done) { - <% if (filters.mongooseModels) { %>UserModel.remove(function() {<% } - if (filters.sequelizeModels) { %>UserModel.destroy({ where: {} }).then(function() {<% } %> - page.signup(testUser); + beforeAll(function(done) { + <% if (filters.mongooseModels) { %>UserModel.removeAsync().then(done);<% } + if (filters.sequelizeModels) { %>UserModel.destroy({ where: {} }).then(done);<% } %> + }); - var navbar = require('../../components/navbar/navbar.po'); + it('should signup a new user, log them in, and redirecting to "/"', function() { + page.signup(testUser); - expect(browser.getLocationAbsUrl()).toBe(config.baseUrl + '/'); - expect(navbar.navbarAccountGreeting.getText()).toBe('Hello ' + testUser.name); + var navbar = require('../../components/navbar/navbar.po'); - done(); - }); + expect(browser.getCurrentUrl()).toBe(config.baseUrl + '/'); + expect(navbar.navbarAccountGreeting.getText()).toBe('Hello ' + testUser.name); }); it('should indicate signup failures', function() { page.signup(testUser); - expect(browser.getLocationAbsUrl()).toBe(config.baseUrl + '/signup'); + expect(browser.getCurrentUrl()).toBe(config.baseUrl + '/signup'); expect(page.form.email.getAttribute('class')).toContain('ng-invalid-mongoose'); var helpBlock = page.form.element(by.css('.form-group.has-error .help-block.ng-binding')); diff --git a/app/templates/e2e/account(auth)/signup/signup.spec(mocha).js b/app/templates/e2e/account(auth)/signup/signup.spec(mocha).js index e4855cc11..c0bade616 100644 --- a/app/templates/e2e/account(auth)/signup/signup.spec(mocha).js +++ b/app/templates/e2e/account(auth)/signup/signup.spec(mocha).js @@ -8,7 +8,8 @@ describe('Signup View', function() { var page; var loadPage = function() { - browser.get('/signup'); + browser.manage().deleteAllCookies() + browser.get(config.baseUrl + '/signup'); page = require('./signup.po'); }; @@ -40,18 +41,18 @@ describe('Signup View', function() { describe('with local auth', function() { - it('should signup a new user, log them in, and redirecting to "/"', function(done) { - <% if (filters.mongooseModels) { %>UserModel.remove(function() {<% } - if (filters.sequelizeModels) { %>UserModel.destroy({ where: {} }).then(function() {<% } %> - page.signup(testUser); + before(function() { + <% if (filters.mongooseModels) { %>return UserModel.removeAsync();<% } + if (filters.sequelizeModels) { %>return UserModel.destroy({ where: {} });<% } %> + }) - var navbar = require('../../components/navbar/navbar.po'); + it('should signup a new user, log them in, and redirecting to "/"', function() { + page.signup(testUser); - <%= does("browser.getLocationAbsUrl()") %>.eventually.equal(config.baseUrl + '/'); - <%= does("navbar.navbarAccountGreeting.getText()") %>.eventually.equal('Hello ' + testUser.name); + var navbar = require('../../components/navbar/navbar.po'); - done(); - }); + <%= does("browser.getCurrentUrl()") %>.eventually.equal(config.baseUrl + '/'); + <%= does("navbar.navbarAccountGreeting.getText()") %>.eventually.equal('Hello ' + testUser.name); }); describe('and invalid credentials', function() { @@ -62,7 +63,7 @@ describe('Signup View', function() { it('should indicate signup failures', function() { page.signup(testUser); - <%= does("browser.getLocationAbsUrl()") %>.eventually.equal(config.baseUrl + '/signup'); + <%= does("browser.getCurrentUrl()") %>.eventually.equal(config.baseUrl + '/signup'); <%= does("page.form.email.getAttribute('class')") %>.eventually.contain('ng-invalid-mongoose'); var helpBlock = page.form.element(by.css('.form-group.has-error .help-block.ng-binding')); diff --git a/app/templates/e2e/components/navbar/navbar.po.js b/app/templates/e2e/components/navbar/navbar.po.js index 62f407210..80a48418e 100644 --- a/app/templates/e2e/components/navbar/navbar.po.js +++ b/app/templates/e2e/components/navbar/navbar.po.js @@ -10,7 +10,7 @@ var NavbarComponent = function() { this.navbarHeader = this.navbar.element(by.css('.navbar-header')); this.navbarNav = this.navbar.element(by.css('#navbar-main .nav.navbar-nav:not(.navbar-right)'));<% if (filters.auth) { %> this.navbarAccount = this.navbar.element(by.css('#navbar-main .nav.navbar-nav.navbar-right')); - this.navbarAccountGreeting = this.navbarAccount.element(by.binding('Hello {{ getCurrentUser().name }}'));<% } %> + this.navbarAccountGreeting = this.navbarAccount.element(by.binding('getCurrentUser().name'));<% } %> }; module.exports = new NavbarComponent(); diff --git a/app/templates/e2e/main/main.spec(jasmine).js b/app/templates/e2e/main/main.spec(jasmine).js index 59456e4e8..57284495a 100644 --- a/app/templates/e2e/main/main.spec(jasmine).js +++ b/app/templates/e2e/main/main.spec(jasmine).js @@ -1,10 +1,12 @@ 'use strict'; +var config = browser.params; + describe('Main View', function() { var page; beforeEach(function() { - browser.get('/'); + browser.get(config.baseUrl + '/'); page = require('./main.po'); }); diff --git a/app/templates/e2e/main/main.spec(mocha).js b/app/templates/e2e/main/main.spec(mocha).js index e734af3a0..4ea5c1012 100644 --- a/app/templates/e2e/main/main.spec(mocha).js +++ b/app/templates/e2e/main/main.spec(mocha).js @@ -1,10 +1,12 @@ 'use strict'; +var config = browser.params; + describe('Main View', function() { var page; beforeEach(function() { - browser.get('/'); + browser.get(config.baseUrl + '/'); page = require('./main.po'); }); diff --git a/app/templates/protractor.conf.js b/app/templates/protractor.conf.js index a5c42a390..7142f6f54 100644 --- a/app/templates/protractor.conf.js +++ b/app/templates/protractor.conf.js @@ -43,13 +43,14 @@ var config = { // Jasmine and Cucumber are fully supported as a test and assertion framework. // Mocha has limited beta support. You will need to include your own // assertion framework if working with mocha. - framework: '<% if (filters.jasmine) { %>jasmine<% } if (filters.mocha) { %>mocha<% } %>', + framework: '<% if (filters.jasmine) { %>jasmine2<% } if (filters.mocha) { %>mocha<% } %>', <% if (filters.jasmine) { %> // ----- Options to be passed to minijasminenode ----- // - // See the full list at https://github.com/juliemr/minijasminenode + // See the full list at https://github.com/jasmine/jasmine-npm jasmineNodeOpts: { - defaultTimeoutInterval: 30000 + defaultTimeoutInterval: 30000, + print: function() {} // for jasmine-spec-reporter },<% } if (filters.mocha) { %> // ----- Options to be passed to mocha ----- mochaOpts: { @@ -73,9 +74,13 @@ var config = { 'should', Object.getOwnPropertyDescriptor(Object.prototype, 'should') ); +<% } if (filters.jasmine) { %> + var SpecReporter = require('jasmine-spec-reporter'); + // add jasmine spec reporter + jasmine.getEnv().addReporter(new SpecReporter({displayStacktrace: true})); <% } %> - var serverConfig = config.params.serverConfig; -<% if (filters.mongoose) { %> + var serverConfig = config.params.serverConfig;<% if (filters.mongoose) { %> + // Setup mongo for tests var mongoose = require('mongoose-bird')(); mongoose.connect(serverConfig.mongo.uri, serverConfig.mongo.options); // Connect to database<% } %>