From 8b5f737e232faf425b0d7641741d0bb4357f7011 Mon Sep 17 00:00:00 2001 From: Georg Raess Date: Thu, 19 Feb 2015 13:21:44 +0100 Subject: [PATCH] more unit tests --- app/scripts/services/validationService.js | 8 +- karma.conf.js | 1 + test/spec/services/Validationservice.spec.js | 35 +++++++-- .../services/dbObjLoadSaveService.spec.js | 75 ++++++++++++++++++- 4 files changed, 104 insertions(+), 15 deletions(-) diff --git a/app/scripts/services/validationService.js b/app/scripts/services/validationService.js index 721a8b514..0f56db6eb 100644 --- a/app/scripts/services/validationService.js +++ b/app/scripts/services/validationService.js @@ -13,7 +13,6 @@ angular.module('emuwebApp') */ sServObj.loadSchemas = function () { var proms = []; - angular.forEach(names, function (n) { proms.push($http.get('schemaFiles/' + n + '.json')); }); @@ -49,12 +48,7 @@ angular.module('emuwebApp') * */ sServObj.validateJSO = function (schemaName, jso) { - var schema; - angular.forEach(schemasJsos, function (s) { - if (s.name === 'schemaFiles/' + schemaName + '.json') { - schema = s; - } - }); + var schema = sServObj.getSchema(schemaName); if (schema !== undefined && tv4.validate(jso, schema.data)) { return true; } else { diff --git a/karma.conf.js b/karma.conf.js index 03ca73945..069f6a0e4 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -23,6 +23,7 @@ module.exports = function (config) { 'app/bower_components/jasmine-jquery/lib/jasmine-jquery.js', 'app/bower_components/angular-filter/dist/angular-filter.js', 'app/bower_components/d3/d3.js', + 'app/bower_components/tv4/tv4.js', 'app/bower_components/angular-ui-sortable/sortable.js', 'app/scripts/!(prototypeexpansions).js', 'app/scripts/filters/*.js', diff --git a/test/spec/services/Validationservice.spec.js b/test/spec/services/Validationservice.spec.js index 6c2325cf4..cd89185cc 100644 --- a/test/spec/services/Validationservice.spec.js +++ b/test/spec/services/Validationservice.spec.js @@ -7,17 +7,38 @@ describe('Service: Validationservice', function () { // load the controller's module beforeEach(module('emuwebApp')); - beforeEach(inject(function($rootScope, Validationservice) { + beforeEach(inject(function($httpBackend, $rootScope, Validationservice) { scope = $rootScope.$new(); - scope.valid = Validationservice; - + $httpBackend.whenGET("schemaFiles/annotationFileSchema.json").respond(annotationFileSchema); + $httpBackend.whenGET("schemaFiles/emuwebappConfigSchema.json").respond(emuwebappConfigSchema); + $httpBackend.whenGET("schemaFiles/DBconfigFileSchema.json").respond(DBconfigFileSchema); + $httpBackend.whenGET("schemaFiles/bundleListSchema.json").respond(bundleListSchema); + Validationservice.loadSchemas(); + $rootScope.$apply(); + })); + + /** + * + */ + it('should validateJSO', inject(function (Validationservice) { + spyOn(Validationservice, 'getSchema').and.returnValue({name: 'test', data: {}}); + expect(Validationservice.validateJSO('emuwebappConfigSchema', 'test')).toEqual(true); + })); + + /** + * + */ + it('should validateJSO', inject(function (Validationservice) { + spyOn(Validationservice, 'getSchema').and.returnValue(undefined); + expect(Validationservice.validateJSO('emuwebappConfigSchema', 'test')).toEqual('Schema: emuwebappConfigSchema is currently undefined! This is probably due to a misnamed schema file on the server...'); })); - + /** - * TODO + * */ - it('should getSchema', inject(function () { - + it('should getSchema', inject(function (Validationservice) { + // schema's not loaded yet... mabye write test with loaded schema too + expect(Validationservice.getSchema('emuwebappConfigSchema')).toEqual(undefined); })); }); \ No newline at end of file diff --git a/test/spec/services/dbObjLoadSaveService.spec.js b/test/spec/services/dbObjLoadSaveService.spec.js index 5e90a3598..e5ce5a3c6 100644 --- a/test/spec/services/dbObjLoadSaveService.spec.js +++ b/test/spec/services/dbObjLoadSaveService.spec.js @@ -1,7 +1,7 @@ 'use strict'; describe('Service: dbObjLoadSaveService', function () { - var scope, deferred; + var scope, deferred, deferred2, deferred3; // load the controller's module beforeEach(module('emuwebApp')); @@ -9,6 +9,8 @@ describe('Service: dbObjLoadSaveService', function () { beforeEach(inject(function (_$rootScope_, $q, dbObjLoadSaveService, viewState, ConfigProviderService) { scope = _$rootScope_; deferred = $q.defer(); + deferred2 = $q.defer(); + deferred3 = $q.defer(); scope.dbo = dbObjLoadSaveService; scope.vs = viewState; scope.cps = ConfigProviderService; @@ -28,4 +30,75 @@ describe('Service: dbObjLoadSaveService', function () { scope.$apply(); expect(Iohandlerservice.saveBundle).toHaveBeenCalled(); })); + + /** + * + */ + it('should saveBundle', inject(function (Binarydatamaniphelper, Ssffdataservice, Ssffparserservice, Iohandlerservice, loadedMetaDataService) { + spyOn(scope.vs, 'getPermission').and.returnValue(true); + spyOn(scope.dbo, 'getAnnotationAndSaveBndl'); + spyOn(Ssffparserservice, 'asyncJso2ssff').and.returnValue(deferred.promise); + Ssffdataservice.data = [{ssffTrackName: 'FORMANTS'}]; + scope.dbo.saveBundle(); + expect(scope.vs.getPermission).toHaveBeenCalledWith('saveBndlBtnClick'); + deferred.resolve({data: []}); + scope.$apply(); + })); + + /** + * + */ + it('should saveBundle', inject(function (Binarydatamaniphelper, Ssffdataservice, Ssffparserservice, Iohandlerservice, loadedMetaDataService) { + spyOn(scope.vs, 'getPermission').and.returnValue(true); + spyOn(scope.dbo, 'getAnnotationAndSaveBndl'); + spyOn(Ssffparserservice, 'asyncJso2ssff').and.returnValue(deferred.promise); + Ssffdataservice.data = []; + scope.dbo.saveBundle(); + expect(scope.vs.getPermission).toHaveBeenCalledWith('saveBndlBtnClick'); + expect(scope.dbo.getAnnotationAndSaveBndl).toHaveBeenCalled(); + deferred.resolve({data: []}); + scope.$apply(); + })); + + /** + * + */ + it('should loadBundle', inject(function (DataService, Validationservice, Binarydatamaniphelper, Ssffparserservice, Wavparserservice, Iohandlerservice, loadedMetaDataService) { + spyOn(loadedMetaDataService, 'getCurBndl').and.returnValue({name: 'test1'}); + spyOn(Iohandlerservice, 'getBundle').and.returnValue(deferred.promise); + spyOn(Wavparserservice, 'parseWavArrBuf').and.returnValue(deferred2.promise); + spyOn(Ssffparserservice, 'asyncParseSsffArr').and.returnValue(deferred3.promise); + spyOn(Validationservice, 'validateJSO').and.returnValue(true); + spyOn(DataService, 'setData'); + spyOn(loadedMetaDataService, 'setCurBndl'); + spyOn(Binarydatamaniphelper, 'base64ToArrayBuffer'); + scope.dbo.loadBundle({name: 'test'}); + expect(loadedMetaDataService.getCurBndl).toHaveBeenCalled(); + deferred.resolve({status: 200, data: { mediaFile: { data: [1, 2, 3]}}}); + scope.$apply(); + expect(Iohandlerservice.getBundle).toHaveBeenCalled(); + deferred2.resolve({Data: []}); + scope.$apply(); + expect(Wavparserservice.parseWavArrBuf).toHaveBeenCalled(); + deferred3.resolve({Data: []}); + scope.$apply(); + expect(Validationservice.validateJSO).toHaveBeenCalled(); + expect(Ssffparserservice.asyncParseSsffArr).toHaveBeenCalled(); + expect(Binarydatamaniphelper.base64ToArrayBuffer).toHaveBeenCalled(); + expect(DataService.setData).toHaveBeenCalled(); + expect(loadedMetaDataService.setCurBndl).toHaveBeenCalled(); + })); + + /** + * + */ + it('should loadBundle (-> discardChanges)', inject(function (modalService, ConfigProviderService, loadedMetaDataService, HistoryService) { + spyOn(modalService, 'open').and.returnValue(deferred.promise); + ConfigProviderService.vals.main.comMode = 'embedded'; + HistoryService.movesAwayFromLastSave = 1; + scope.dbo.loadBundle({name: 'test'}); + deferred.resolve('discardChanges'); + scope.$apply(); + expect(modalService.open).toHaveBeenCalled(); + })); }); \ No newline at end of file