From 1a892dc0813b58fa43b29cd8d99d50c6e23e7aeb Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Thu, 17 May 2018 16:23:49 -0400 Subject: [PATCH] LP#1626157 IDL/org unit tests with mock data Signed-off-by: Bill Erickson --- Open-ILS/src/eg2/karma.conf.js | 11 ++++- Open-ILS/src/eg2/package.json | 5 +- Open-ILS/src/eg2/src/app/core/auth.service.ts | 8 ++-- Open-ILS/src/eg2/src/app/core/event.spec.ts | 4 +- Open-ILS/src/eg2/src/app/core/idl.spec.ts | 26 +++++++++++ Open-ILS/src/eg2/src/app/core/org.spec.ts | 66 +++++++++++++++++++++++++++ 6 files changed, 110 insertions(+), 10 deletions(-) create mode 100644 Open-ILS/src/eg2/src/app/core/idl.spec.ts create mode 100644 Open-ILS/src/eg2/src/app/core/org.spec.ts diff --git a/Open-ILS/src/eg2/karma.conf.js b/Open-ILS/src/eg2/karma.conf.js index bed8c6fbf0..63982de94b 100644 --- a/Open-ILS/src/eg2/karma.conf.js +++ b/Open-ILS/src/eg2/karma.conf.js @@ -29,6 +29,15 @@ module.exports = function (config) { logLevel: config.LOG_INFO, autoWatch: true, browsers: ['PhantomJS'], - singleRun: true + singleRun: true, + files: [ + '/openils/lib/javascript/md5.js', + '/openils/lib/javascript/JSON_v1.js', + '/openils/lib/javascript/opensrf.js', + '/openils/lib/javascript/opensrf_ws.js', + // mock data for testing only + 'src/test_data/IDL2js.js', + 'src/test_data/eg_mock.js', + ] }); }; diff --git a/Open-ILS/src/eg2/package.json b/Open-ILS/src/eg2/package.json index 0955f5c570..cb745d20af 100644 --- a/Open-ILS/src/eg2/package.json +++ b/Open-ILS/src/eg2/package.json @@ -6,9 +6,10 @@ "ng": "ng", "start": "ng serve", "build": "ng build", - "test": "ng test", + "test": "npm run create-mock-idl; ng test", "lint": "ng lint", - "e2e": "ng e2e" + "e2e": "ng e2e", + "create-mock-idl": "cd src/test_data && perl idl2js.pl" }, "private": true, "dependencies": { diff --git a/Open-ILS/src/eg2/src/app/core/auth.service.ts b/Open-ILS/src/eg2/src/app/core/auth.service.ts index 958e176e0c..73fc9fd121 100644 --- a/Open-ILS/src/eg2/src/app/core/auth.service.ts +++ b/Open-ILS/src/eg2/src/app/core/auth.service.ts @@ -58,11 +58,9 @@ export class EgAuthService { private store: EgStoreService ) { - console.log("egAuth constructor()"); - - // BroadcastChannel is not yet defined in PhantomJS - this.authChannel = BroadcastChannel ? - new BroadcastChannel('eg.auth') : {}; + // BroadcastChannel is not yet defined in PhantomJS and elsewhere + this.authChannel = (typeof BroadcastChannel == 'undefined') ? + {} : new BroadcastChannel('eg.auth'); } // Returns true if we are currently in op-change mode. diff --git a/Open-ILS/src/eg2/src/app/core/event.spec.ts b/Open-ILS/src/eg2/src/app/core/event.spec.ts index a14f89bd4f..acafe601b7 100644 --- a/Open-ILS/src/eg2/src/app/core/event.spec.ts +++ b/Open-ILS/src/eg2/src/app/core/event.spec.ts @@ -1,10 +1,10 @@ import {EgEventService} from './event.service'; -describe('EgEventService', function(){ +describe('EgEventService', () => { let service: EgEventService; beforeEach(() => {service = new EgEventService();}); - let evt = { + const evt = { ilsevent: "12345", pid: "12345", desc: "Test Event Description", diff --git a/Open-ILS/src/eg2/src/app/core/idl.spec.ts b/Open-ILS/src/eg2/src/app/core/idl.spec.ts new file mode 100644 index 0000000000..33cd87ba1c --- /dev/null +++ b/Open-ILS/src/eg2/src/app/core/idl.spec.ts @@ -0,0 +1,26 @@ +import {EgIdlService} from './idl.service'; + +describe('EgIdlService', () => { + let service: EgIdlService; + beforeEach(() => {service = new EgIdlService();}); + + it('should parse the IDL', () => { + service.parseIdl(); + expect(service.classes['aou'].fields.length).toBeGreaterThan(0); + }); + + it('should create an aou object', () => { + service.parseIdl(); + let org = service.create('aou'); + expect(typeof org.id).toBe('function'); + }); + + it('should create an aou object with accessor/mutators', () => { + service.parseIdl(); + let org = service.create('aou'); + org.name('AN ORG'); + expect(org.name()).toBe('AN ORG'); + }); + +}); + diff --git a/Open-ILS/src/eg2/src/app/core/org.spec.ts b/Open-ILS/src/eg2/src/app/core/org.spec.ts new file mode 100644 index 0000000000..4a4029592b --- /dev/null +++ b/Open-ILS/src/eg2/src/app/core/org.spec.ts @@ -0,0 +1,66 @@ +import {EgIdlService} from './idl.service'; +import {EgEventService} from './event.service'; +import {EgNetService} from './net.service'; +import {EgAuthService} from './auth.service'; +import {EgPcrudService} from './pcrud.service'; +import {EgStoreService} from './store.service'; +import {EgOrgService} from './org.service'; + +describe('EgOrgService', () => { + let idlService: EgIdlService; + let netService: EgNetService; + let authService: EgAuthService; + let pcrudService: EgPcrudService; + let orgService: EgOrgService; + let evtService: EgEventService; + let storeService: EgStoreService; + + beforeEach(() => { + idlService = new EgIdlService(); + evtService = new EgEventService(); + storeService = new EgStoreService(); + netService = new EgNetService(evtService); + authService = new EgAuthService(evtService, netService, storeService); + pcrudService = new EgPcrudService(idlService, netService, authService); + orgService = new EgOrgService(netService, authService, pcrudService); + }); + + const initTestData = () => { + idlService.parseIdl(); + const win: any = window; // trick TS + win._eg_mock_data.generateOrgTree(idlService, orgService); + }; + + it('should provide get by ID', () => { + initTestData(); + expect(orgService.get(orgService.tree().id())).toBe(orgService.root()); + }); + + it('should provide get by node', () => { + initTestData(); + expect(orgService.get(orgService.tree())).toBe(orgService.root()); + }); + + it('should provide ancestors', () => { + initTestData(); + expect(orgService.ancestors(2, true)).toEqual([2, 1]); + }); + + it('should provide descendants', () => { + initTestData(); + expect(orgService.descendants(2, true)).toEqual([2, 4]); + }); + + it('should provide full path', () => { + initTestData(); + expect(orgService.fullPath(4, true)).toEqual([4, 2, 1]); + }); + + it('should provide root', () => { + initTestData(); + expect(orgService.root().id()).toEqual(1); + }); + +}); + + -- 2.11.0