Skip to content

Commit

Permalink
more unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Georg Raess committed Feb 19, 2015
1 parent 3f572ac commit 8b5f737
Show file tree
Hide file tree
Showing 4 changed files with 104 additions and 15 deletions.
8 changes: 1 addition & 7 deletions app/scripts/services/validationService.js
Expand Up @@ -13,7 +13,6 @@ angular.module('emuwebApp')
*/
sServObj.loadSchemas = function () {
var proms = [];

angular.forEach(names, function (n) {
proms.push($http.get('schemaFiles/' + n + '.json'));
});
Expand Down Expand Up @@ -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 {
Expand Down
1 change: 1 addition & 0 deletions karma.conf.js
Expand Up @@ -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',
Expand Down
35 changes: 28 additions & 7 deletions test/spec/services/Validationservice.spec.js
Expand Up @@ -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);
}));

});
75 changes: 74 additions & 1 deletion test/spec/services/dbObjLoadSaveService.spec.js
@@ -1,14 +1,16 @@
'use strict';

describe('Service: dbObjLoadSaveService', function () {
var scope, deferred;
var scope, deferred, deferred2, deferred3;

// load the controller's module
beforeEach(module('emuwebApp'));

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;
Expand All @@ -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();
}));
});

0 comments on commit 8b5f737

Please sign in to comment.