From 2a0d780459ced25346c04d914686545aa1d0efe1 Mon Sep 17 00:00:00 2001 From: kiswa Date: Wed, 17 Aug 2016 16:25:08 +0000 Subject: [PATCH] Fix app tests and update/clean tests --- gulpfile.js | 8 +- package.json | 1 + test/app/app.api-http.spec.js | 40 ++---- test/app/app.module.spec.js | 11 ++ test/app/app.routes.spec.js | 13 +- .../calendar/calendar.component.spec.js | 5 +- .../dashboard/charts/charts.component.spec.js | 7 +- test/app/login/login.component.spec.js | 6 +- test/app/mocks.js | 9 +- .../board-admin/board-admin.component.spec.js | 24 ++++ .../board-admin/board-data.model.spec.js | 125 ++++++++++++++++++ .../user-admin/user-admin.component.spec.js | 6 +- .../user-admin/user-admin.service.spec.js | 10 +- .../user-settings.component.spec.js | 6 +- .../user-settings.service.spec.js | 6 +- test/app/shared/auth/auth.guard.spec.js | 6 +- test/app/shared/auth/auth.service.spec.js | 6 +- test/app/shared/constants.spec.js | 5 +- test/app/shared/modal/modal.component.spec.js | 6 +- test/app/shared/modal/modal.service.spec.js | 7 +- .../shared/models/notification.model.spec.js | 5 +- test/app/shared/models/user.model.spec.js | 5 +- .../notifications.component.spec.js | 6 +- .../notifications.service.spec.js | 5 +- .../shared/top-nav/top-nav.component.spec.js | 9 +- 25 files changed, 228 insertions(+), 109 deletions(-) create mode 100644 test/app/app.module.spec.js create mode 100644 test/app/settings/board-admin/board-admin.component.spec.js create mode 100644 test/app/settings/board-admin/board-data.model.spec.js diff --git a/gulpfile.js b/gulpfile.js index 3c8aa27..7cec51a 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -158,7 +158,9 @@ gulp.task('test', ['test-app', 'test-api']); gulp.task('test-app', ['tsc'], () => { return gulp.src(paths.tests_app) - .pipe(mocha()); + .pipe(mocha({ + require: ['./test/app/mocks.js'] + })); }); gulp.task('coverage', ['tsc'], () => { @@ -166,7 +168,9 @@ gulp.task('coverage', ['tsc'], () => { .pipe(coverage.instrument({ pattern: ['build/**/*.js'] })) - .pipe(mocha()) + .pipe(mocha({ + require: ['./test/app/mocks.js'] + })) .pipe(coverage.gather()) .pipe(coverage.format()) .pipe(gulp.dest('./')); diff --git a/package.json b/package.json index 571b885..51f29e5 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "gulp-uglify": "^2.0.0", "gulp-util": "^3.0.7", "merge-stream": "^1.0.0", + "mock-browser": "^0.92.12", "ng2-dragula": "^1.1.10", "reflect-metadata": "^0.1.8", "rxjs": "5.0.0-beta.6", diff --git a/test/app/app.api-http.spec.js b/test/app/app.api-http.spec.js index 98573ef..a27716b 100644 --- a/test/app/app.api-http.spec.js +++ b/test/app/app.api-http.spec.js @@ -1,33 +1,9 @@ +/* globals expect RxJs localStorage */ require('reflect-metadata/Reflect.js'); -var chai = require('chai'), - expect = chai.expect, - path = '../../build/app.', +var path = '../../build/app.', apihttp = require(path + 'api-http.js'), - ApiHttp = apihttp.ApiHttp, - RxJs = require('rxjs/Rx'); - -global.localStorage = (function() { - var storage = {}; - - return { - getItem: (key) => { - if (storage.hasOwnProperty(key)) { - return storage[key]; - } else { - return ''; - } - }, - setItem: (key, value) => { - storage[key] = value; - }, - removeItem: (key) => { - if (storage.hasOwnProperty(key)) { - delete storage[key]; - } - } - }; -})(); + ApiHttp = apihttp.ApiHttp; describe('ApiHttp', () => { var apiHttp; @@ -46,13 +22,13 @@ describe('ApiHttp', () => { }); it('injects headers', () => { - global.localStorage.setItem('taskboard.jwt', 'testjwt'); + localStorage.setItem('taskboard.jwt', 'testjwt'); var headers = apiHttp.getRequestOptionArgs().headers; - expect(headers._headersMap.get('Content-Type')[0]) + expect(headers._headersMap.get('content-type')[0]) .to.equal('application/json'); - expect(headers._headersMap.get('Authorization')[0]) + expect(headers._headersMap.get('authorization')[0]) .to.equal('testjwt'); }); @@ -67,13 +43,13 @@ describe('ApiHttp', () => { apiHttp.intercept(RxJs.Observable.of(response)) .map(response => { - expect(global.localStorage.getItem('taskboard.jwt')) + expect(localStorage.getItem('taskboard.jwt')) .to.equal('testjwt'); }); apiHttp.intercept(RxJs.Observable.throw(null, response)) .catch((err, caught) => { - expect(global.localStorage.getItem('taskboard.jwt')) + expect(localStorage.getItem('taskboard.jwt')) .to.equal(''); }); }); diff --git a/test/app/app.module.spec.js b/test/app/app.module.spec.js new file mode 100644 index 0000000..ff4ff51 --- /dev/null +++ b/test/app/app.module.spec.js @@ -0,0 +1,11 @@ +/* global expect */ +var path = '../../build/', + AppModule = require(path + 'app.module.js').AppModule; + +describe('Module', () => { + it('provides an AppModule class', () => { + var appModule = new AppModule(); + expect(appModule).to.be.an('object'); + }); +}); + diff --git a/test/app/app.routes.spec.js b/test/app/app.routes.spec.js index 88f856a..47d148c 100644 --- a/test/app/app.routes.spec.js +++ b/test/app/app.routes.spec.js @@ -1,11 +1,14 @@ -var chai = require('chai'), - expect = chai.expect, - path = '../../build/', +/* global expect */ +var path = '../../build/', routes = require(path + 'app.routes.js'); describe('Routes', () => { - it('provides APP_ROUTER_PROVIDERS', () => { - expect(routes.APP_ROUTER_PROVIDERS).to.be.an('array'); + it('provides APP_ROUTING', () => { + expect(routes.APP_ROUTING).to.be.an('object'); + }); + + it('provides APP_COMPONENTS', () => { + expect(routes.APP_COMPONENTS).to.be.an('array'); }); }); diff --git a/test/app/dashboard/calendar/calendar.component.spec.js b/test/app/dashboard/calendar/calendar.component.spec.js index 472e6e7..60c7c58 100644 --- a/test/app/dashboard/calendar/calendar.component.spec.js +++ b/test/app/dashboard/calendar/calendar.component.spec.js @@ -1,6 +1,5 @@ -var chai = require('chai'), - expect = chai.expect, - path = '../../../../build/dashboard/calendar/', +/* global expect */ +var path = '../../../../build/dashboard/calendar/', Calendar = require(path + 'calendar.component.js').Calendar; describe('Calendar', () => { diff --git a/test/app/dashboard/charts/charts.component.spec.js b/test/app/dashboard/charts/charts.component.spec.js index a6fce0c..e100877 100644 --- a/test/app/dashboard/charts/charts.component.spec.js +++ b/test/app/dashboard/charts/charts.component.spec.js @@ -1,8 +1,5 @@ -require('../../mocks.js'); - -var chai = require('chai'), - expect = chai.expect, - path = '../../../../build/dashboard/charts/', +/* globals expect */ +var path = '../../../../build/dashboard/charts/', Charts = require(path + 'charts.component.js').Charts; describe('Charts', () => { diff --git a/test/app/login/login.component.spec.js b/test/app/login/login.component.spec.js index 440ae35..4406b40 100644 --- a/test/app/login/login.component.spec.js +++ b/test/app/login/login.component.spec.js @@ -1,7 +1,5 @@ -/* global ConstantsMock AuthServiceMock RouterMock NotificationsServiceMock */ -var chai = require('chai'), - expect = chai.expect, - path = '../../../build/login/', +/* global expect ConstantsMock AuthServiceMock RouterMock NotificationsServiceMock */ +var path = '../../../build/login/', Login = require(path + 'login.component.js').Login; describe('Login', () => { diff --git a/test/app/mocks.js b/test/app/mocks.js index c24d264..b39b95c 100644 --- a/test/app/mocks.js +++ b/test/app/mocks.js @@ -1,4 +1,11 @@ -var RxJs = require('rxjs/Rx'); +var MockBrowser = require('mock-browser').mocks.MockBrowser, + mockBrowser = new MockBrowser(), + chai = require('chai'); + +global.RxJs = require('rxjs/Rx'); +global.expect = chai.expect; +global.document = mockBrowser.getDocument(); +global.localStorage = mockBrowser.getLocalStorage(); global.Chartist = { Pie: function(id, data, opts) { diff --git a/test/app/settings/board-admin/board-admin.component.spec.js b/test/app/settings/board-admin/board-admin.component.spec.js new file mode 100644 index 0000000..bbd48d6 --- /dev/null +++ b/test/app/settings/board-admin/board-admin.component.spec.js @@ -0,0 +1,24 @@ +/* global expect AuthServiceMock ModalServiceMock */ +var path = '../../../../build/settings/board-admin/', + BoardAdmin = require(path + 'board-admin.component.js').BoardAdmin, + DragulaService = require('../../../../node_modules/ng2-dragula/src/app/providers/dragula.provider.js') + .DragulaService; + +describe('BoardAdmin', () => { + var boardAdmin; + + beforeEach(() => { + boardAdmin = new BoardAdmin(AuthServiceMock, new ModalServiceMock(), + new DragulaService()); + }); + + it('has a function to get a color', () => { + var color = boardAdmin.getColor({ defaultColor: 'test' }); + expect(color).to.equal('test'); + }); + + it('implements ngAfterContentInit', () => { + expect(boardAdmin.ngAfterContentInit).to.be.a('function'); + }); +}); + diff --git a/test/app/settings/board-admin/board-data.model.spec.js b/test/app/settings/board-admin/board-data.model.spec.js new file mode 100644 index 0000000..02fa504 --- /dev/null +++ b/test/app/settings/board-admin/board-data.model.spec.js @@ -0,0 +1,125 @@ +/* global expect */ +var path = '../../../../build/settings/board-admin/', + BoardData = require(path + 'board-data.model.js').BoardData; + +describe('BoardData', () => { + var boardData; + + beforeEach(() => { + boardData = new BoardData(); + }); + + it('has a boardName property', () => { + expect(boardData.boardName).to.be.a('string'); + }); + + it('has a columns property', () => { + expect(boardData.columns).to.be.an('array'); + }); + + it('has a categories property', () => { + expect(boardData.categories).to.be.an('array'); + }); + + it('has an issueTrackers property', () => { + expect(boardData.issueTrackers).to.be.an('array'); + }); + + it('has a users property', () => { + expect(boardData.users).to.be.an('array'); + }); + + it('has a categoryDefaultColor property', () => { + expect(boardData.categoryDefaultColor).to.be.a('string'); + }); + + it('has a newColumnName property', () => { + expect(boardData.newColumnName).to.be.a('string'); + }); + + it('has a newCategoryName property', () => { + expect(boardData.newCategoryName).to.be.a('string'); + }); + + it('has an issueTrackerUrl property', () => { + expect(boardData.issueTrackerUrl).to.be.a('string'); + }); + + it('has an issueTrackerBugId property', () => { + expect(boardData.issueTrackerBugId).to.be.a('string'); + }); + + it('allows a column to be added', () => { + boardData.addColumn(); + expect(boardData.columns.length).to.equal(0); + + boardData.newColumnName = 'test'; + boardData.addColumn(); + + expect(boardData.columns.length).to.equal(1); + expect(boardData.columns[0].name).to.equal('test'); + expect(boardData.newColumnName).to.equal(''); + }); + + it('allows a column to be removed', () => { + var column = { name: 'test' }; + boardData.removeColumn(column); + + boardData.columns.push(column); + expect(boardData.columns.length).to.equal(1); + + boardData.removeColumn(column); + expect(boardData.columns.length).to.equal(0); + }); + + it('allows a category to be added', () => { + boardData.addCategory(); + expect(boardData.categories.length).to.equal(0); + + boardData.newCategoryName = 'test'; + boardData.categoryDefaultColor = '#ffffe0'; + boardData.addCategory(); + + expect(boardData.categories.length).to.equal(1); + expect(boardData.categories[0].name).to.equal('test'); + expect(boardData.newCategoryName).to.equal(''); + expect(boardData.categoryDefaultColor).to.equal('#ffffe0'); + }); + + it('allows a category to be removed', () => { + var category = { name: 'test', defaultColor: '#ffffe0' }; + boardData.removeCategory(category); + + boardData.categories.push(category); + expect(boardData.categories.length).to.equal(1); + + boardData.removeCategory(category); + expect(boardData.categories.length).to.equal(0); + }); + + it('allows an issue tracker to be added', () => { + boardData.addIssueTracker(); + expect(boardData.issueTrackers.length).to.equal(0); + + boardData.issueTrackerUrl = 'test'; + boardData.issueTrackerBugId = 'test'; + boardData.addIssueTracker(); + + expect(boardData.issueTrackers.length).to.equal(1); + expect(boardData.issueTrackers[0].url).to.equal('test'); + expect(boardData.issueTrackerUrl).to.equal(''); + expect(boardData.issueTrackerBugId).to.equal(''); + }); + + it('allows an issue tracker to be removed', () => { + var issueTracker = { url: 'test', bugId: 'test' }; + boardData.removeIssueTracker(issueTracker); + + boardData.issueTrackers.push(issueTracker); + expect(boardData.issueTrackers.length).to.equal(1); + + boardData.removeIssueTracker(issueTracker); + expect(boardData.issueTrackers.length).to.equal(0); + }); +}); + diff --git a/test/app/settings/user-admin/user-admin.component.spec.js b/test/app/settings/user-admin/user-admin.component.spec.js index 352d163..adf114e 100644 --- a/test/app/settings/user-admin/user-admin.component.spec.js +++ b/test/app/settings/user-admin/user-admin.component.spec.js @@ -1,7 +1,5 @@ -/* global UserAdminServiceMock NotificationsServiceMock AuthServiceMock ModalServiceMock */ -var chai = require('chai'), - expect = chai.expect, - path = '../../../../build/settings/user-admin/', +/* global expect UserAdminServiceMock NotificationsServiceMock AuthServiceMock ModalServiceMock */ +var path = '../../../../build/settings/user-admin/', UserAdmin = require(path + 'user-admin.component.js').UserAdmin; describe('UserAdmin', () => { diff --git a/test/app/settings/user-admin/user-admin.service.spec.js b/test/app/settings/user-admin/user-admin.service.spec.js index 25911ac..75e9eac 100644 --- a/test/app/settings/user-admin/user-admin.service.spec.js +++ b/test/app/settings/user-admin/user-admin.service.spec.js @@ -1,7 +1,5 @@ -/* global HttpMock */ -var chai = require('chai'), - expect = chai.expect, - path = '../../../../build/settings/user-admin/', +/* global expect HttpMock */ +var path = '../../../../build/settings/user-admin/', UserAdminService = require(path + 'user-admin.service.js').UserAdminService; describe('UserAdminService', () => { @@ -36,7 +34,7 @@ describe('UserAdminService', () => { userAdminService.removeUser(1).subscribe(user => { expect(user.endpoint).to.equal('api/users/1'); done(); - }) - }) + }); + }); }); diff --git a/test/app/settings/user-settings/user-settings.component.spec.js b/test/app/settings/user-settings/user-settings.component.spec.js index 9e05b48..0c24c80 100644 --- a/test/app/settings/user-settings/user-settings.component.spec.js +++ b/test/app/settings/user-settings/user-settings.component.spec.js @@ -1,7 +1,5 @@ -/* global AuthServiceMock NotificationsServiceMock UserSettingsServiceMock */ -var chai = require('chai'), - expect = chai.expect, - path = '../../../../build/settings/user-settings/', +/* global expect AuthServiceMock NotificationsServiceMock UserSettingsServiceMock */ +var path = '../../../../build/settings/user-settings/', UserSettings = require(path + 'user-settings.component.js').UserSettings; describe('UserSettings', () => { diff --git a/test/app/settings/user-settings/user-settings.service.spec.js b/test/app/settings/user-settings/user-settings.service.spec.js index cf350c0..90a0181 100644 --- a/test/app/settings/user-settings/user-settings.service.spec.js +++ b/test/app/settings/user-settings/user-settings.service.spec.js @@ -1,7 +1,5 @@ -/* global AuthServiceMock HttpMock */ -var chai = require('chai'), - expect = chai.expect, - path = '../../../../build/settings/user-settings/', +/* global expect AuthServiceMock HttpMock */ +var path = '../../../../build/settings/user-settings/', UserSettingsService = require(path + 'user-settings.service.js').UserSettingsService; diff --git a/test/app/shared/auth/auth.guard.spec.js b/test/app/shared/auth/auth.guard.spec.js index c5fcc27..356eddc 100644 --- a/test/app/shared/auth/auth.guard.spec.js +++ b/test/app/shared/auth/auth.guard.spec.js @@ -1,7 +1,5 @@ -/* global AuthServiceMock */ -var chai = require('chai'), - expect = chai.expect, - path = '../../../../build/shared/auth/', +/* global expect AuthServiceMock */ +var path = '../../../../build/shared/auth/', AuthGuard = require(path + 'auth.guard.js').AuthGuard; describe('AuthGuard', () => { diff --git a/test/app/shared/auth/auth.service.spec.js b/test/app/shared/auth/auth.service.spec.js index 3d64724..49601d9 100644 --- a/test/app/shared/auth/auth.service.spec.js +++ b/test/app/shared/auth/auth.service.spec.js @@ -1,7 +1,5 @@ -/* global ConstantsMock, HttpMock, RouterMock */ -var chai = require('chai'), - expect = chai.expect, - path = '../../../../build/shared/auth/', +/* global expect ConstantsMock, HttpMock, RouterMock */ +var path = '../../../../build/shared/auth/', AuthService = require(path + 'auth.service.js').AuthService; describe('AuthService', () => { diff --git a/test/app/shared/constants.spec.js b/test/app/shared/constants.spec.js index 05a195b..34f5a12 100644 --- a/test/app/shared/constants.spec.js +++ b/test/app/shared/constants.spec.js @@ -1,6 +1,5 @@ -var chai = require('chai'), - expect = chai.expect, - path = '../../../build/shared/', +/* global expect */ +var path = '../../../build/shared/', Constants = require(path + 'constants.js').Constants; describe('Constants', () => { diff --git a/test/app/shared/modal/modal.component.spec.js b/test/app/shared/modal/modal.component.spec.js index 51a283e..9e979c2 100644 --- a/test/app/shared/modal/modal.component.spec.js +++ b/test/app/shared/modal/modal.component.spec.js @@ -1,7 +1,5 @@ -/* global ModalServiceMock */ -var chai = require('chai'), - expect = chai.expect, - path = '../../../../build/shared/modal/', +/* global expect ModalServiceMock */ +var path = '../../../../build/shared/modal/', Modal = require(path + 'modal.component.js').Modal; describe('Modal', () => { diff --git a/test/app/shared/modal/modal.service.spec.js b/test/app/shared/modal/modal.service.spec.js index feb6473..1855d8d 100644 --- a/test/app/shared/modal/modal.service.spec.js +++ b/test/app/shared/modal/modal.service.spec.js @@ -1,6 +1,5 @@ -var chai = require('chai'), - expect = chai.expect, - path = '../../../../build/shared/modal/', +/* globals expect */ +var path = '../../../../build/shared/modal/', ModalService = require(path + 'modal.service.js').ModalService; describe('ModalService', () => { @@ -12,7 +11,7 @@ describe('ModalService', () => { modal = { modalId: 'testModal', isOpen: false - } + }; }); it('has an array of modals', () => { diff --git a/test/app/shared/models/notification.model.spec.js b/test/app/shared/models/notification.model.spec.js index 2dde2d7..aff371c 100644 --- a/test/app/shared/models/notification.model.spec.js +++ b/test/app/shared/models/notification.model.spec.js @@ -1,6 +1,5 @@ -var chai = require('chai'), - expect = chai.expect, - path = '../../../../build/shared/models/', +/* global expect */ +var path = '../../../../build/shared/models/', Notification = require(path + 'notification.model.js').Notification; describe('Notification', () => { diff --git a/test/app/shared/models/user.model.spec.js b/test/app/shared/models/user.model.spec.js index 43e8e39..da383f8 100644 --- a/test/app/shared/models/user.model.spec.js +++ b/test/app/shared/models/user.model.spec.js @@ -1,6 +1,5 @@ -var chai = require('chai'), - expect = chai.expect, - path = '../../../../build/shared/models/', +/* globals expect */ +var path = '../../../../build/shared/models/', User = require(path + 'user.model.js').User; describe('User', () => { diff --git a/test/app/shared/notifications/notifications.component.spec.js b/test/app/shared/notifications/notifications.component.spec.js index 6bccecf..8a5e071 100644 --- a/test/app/shared/notifications/notifications.component.spec.js +++ b/test/app/shared/notifications/notifications.component.spec.js @@ -1,7 +1,5 @@ -/* global NotificationsServiceMock */ -var chai = require('chai'), - expect = chai.expect, - path = '../../../../build/shared/notifications/', +/* global expect NotificationsServiceMock */ +var path = '../../../../build/shared/notifications/', Notifications = require(path + 'notifications.component.js').Notifications; describe('Notifications', () => { diff --git a/test/app/shared/notifications/notifications.service.spec.js b/test/app/shared/notifications/notifications.service.spec.js index 016d4fa..c4c04a0 100644 --- a/test/app/shared/notifications/notifications.service.spec.js +++ b/test/app/shared/notifications/notifications.service.spec.js @@ -1,6 +1,5 @@ -var chai = require('chai'), - expect = chai.expect, - path = '../../../../build/shared/notifications/', +/* global expect */ +var path = '../../../../build/shared/notifications/', NotificationsService = require(path + 'notifications.service.js') .NotificationsService; diff --git a/test/app/shared/top-nav/top-nav.component.spec.js b/test/app/shared/top-nav/top-nav.component.spec.js index 7b8451f..957603d 100644 --- a/test/app/shared/top-nav/top-nav.component.spec.js +++ b/test/app/shared/top-nav/top-nav.component.spec.js @@ -1,10 +1,5 @@ -/* global ConstantsMock RouterMock AuthServiceMock NotificationsServiceMock */ - -require('../../mocks.js'); - -var chai = require('chai'), - expect = chai.expect, - path = '../../../../build/shared/top-nav/', +/* global expect ConstantsMock RouterMock AuthServiceMock NotificationsServiceMock */ +var path = '../../../../build/shared/top-nav/', TopNav = require(path + 'top-nav.component.js').TopNav; describe('TopNav', () => {