// retain a copy of the full IDL within the service
service.classes = $window._preload_fieldmapper_IDL;
- // original, global reference no longer needed
- $window._preload_fieldmapper_IDL = null;
+ // keep this reference around (note: not a clone, just a ref)
+ // so that unit tests, which repeatedly instantiate the
+ // service will work.
+ //$window._preload_fieldmapper_IDL = null;
/**
* Creates the class constructor and getter/setter
--- /dev/null
+#!/usr/bin/perl
+use strict; use warnings;
+use XML::LibXML;
+use XML::LibXSLT;
+my $out_file = 'IDL2js.js';
+my $idl_file = '../../../../../../../examples/fm_IDL.xml';
+my $xsl_file = '/openils/var/xsl/fm_IDL2js.xsl'; # FIXME: hard-coded path
+
+my $xslt = XML::LibXSLT->new();
+my $style_doc = XML::LibXML->load_xml(location => $xsl_file, no_cdata=>1);
+my $stylesheet = $xslt->parse_stylesheet($style_doc);
+my $idl_doc = XML::LibXML->load_xml(location => $idl_file);
+my $results = $stylesheet->transform($idl_doc);
+my $output = $stylesheet->output_as_bytes($results);
+
+open(IDL, ">$out_file") or die "Cannot open IDL2js file $out_file : $!\n";
+
+print IDL $output;
+
+close(IDL);
+
+
'/openils/lib/javascript/JSON_v1.js',
'/openils/lib/javascript/opensrf.js',
'/openils/lib/javascript/opensrf_ws.js',
+
+ // mock data for testing only
+ 'test/data/IDL2js.js',
+
// service/*.js have to be loaded in order
'services/core.js',
'services/idl.js',
'circ/**/*.js',
'cat/**/*.js',
'admin/**/*.js',
+ 'test/unit/egIDL.js', // order matters here
'test/unit/**/*.js'
],
--- /dev/null
+'use strict';
+
+describe('egIDL', function(){
+ beforeEach(module('egCoreMod'));
+
+ it('should parse the IDL', inject(function(egIDL) {
+ egIDL.parseIDL();
+ expect(egIDL.classes.aou.fields.length).toBeGreaterThan(0);
+ }));
+
+ it('should create an aou object', inject(function(egIDL) {
+ egIDL.parseIDL();
+ var org = new egIDL.aou();
+ expect(typeof org.id).toBe('function');
+ }));
+
+ it('should create an aou object with accessor/mutators', inject(function(egIDL) {
+ egIDL.parseIDL();
+ var org = new egIDL.aou();
+ org.name('AN ORG');
+ expect(org.name()).toBe('AN ORG');
+ }));
+
+});
+
+
--- /dev/null
+'use strict';
+
+describe('egOrg', function(){
+ beforeEach(module('egCoreMod'));
+
+ function mkTree(egIDL, egEnv) { // FIXME: external sample data
+ egIDL.parseIDL();
+ var org1 = new egIDL.aou(); org1.id(1);
+ var org2 = new egIDL.aou(); org2.id(2); org2.parent_ou(1);
+ var org3 = new egIDL.aou(); org3.id(3); org3.parent_ou(1);
+ var org4 = new egIDL.aou(); org4.id(4); org4.parent_ou(2);
+ org1.children([org2, org3]);
+ org2.children([org4]);
+ org3.children([]);
+ org4.children([]);
+
+ egEnv.absorbTree(org1, 'aou');
+ }
+
+ it('should provide get by ID', inject(function(egIDL, egEnv, egOrg) {
+ mkTree(egIDL, egEnv);
+ expect(egOrg.get(egEnv.aou.tree.id())).toBe(egEnv.aou.tree);
+ }));
+
+ it('should provide get by node', inject(function(egIDL, egEnv, egOrg) {
+ mkTree(egIDL, egEnv);
+ expect(egOrg.get(egEnv.aou.tree).id()).toBe(egEnv.aou.tree.id());
+ }));
+
+ it('should provide ancestors', inject(function(egIDL, egEnv, egOrg) {
+ mkTree(egIDL, egEnv);
+ expect(egOrg.ancestors(2, true)).toEqual([2, 1]);
+ }));
+
+ it('should provide descendants', inject(function(egIDL, egEnv, egOrg) {
+ mkTree(egIDL, egEnv);
+ expect(egOrg.descendants(2, true)).toEqual([2, 4]);
+ }));
+
+ it('should provide full path', inject(function(egIDL, egEnv, egOrg) {
+ mkTree(egIDL, egEnv);
+ expect(egOrg.fullPath(4, true)).toEqual([4, 2, 1]);
+ }));
+});
+
+