LP#1775466 IDL/org unit tests with mock data
authorBill Erickson <berickxx@gmail.com>
Thu, 17 May 2018 20:23:49 +0000 (16:23 -0400)
committerBill Erickson <berickxx@gmail.com>
Wed, 6 Jun 2018 20:59:39 +0000 (16:59 -0400)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/eg2/karma.conf.js
Open-ILS/src/eg2/package.json
Open-ILS/src/eg2/src/app/core/auth.service.ts
Open-ILS/src/eg2/src/app/core/event.spec.ts
Open-ILS/src/eg2/src/app/core/idl.spec.ts [new file with mode: 0644]
Open-ILS/src/eg2/src/app/core/org.spec.ts [new file with mode: 0644]

index bed8c6f..63982de 100644 (file)
@@ -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',
+    ]
   });
 };
index 0955f5c..cb745d2 100644 (file)
@@ -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": {
index 958e176..73fc9fd 100644 (file)
@@ -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.
index a14f89b..acafe60 100644 (file)
@@ -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 (file)
index 0000000..33cd87b
--- /dev/null
@@ -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 (file)
index 0000000..4a40295
--- /dev/null
@@ -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);
+    });
+
+});
+
+