CORD-772 Extending the GUI with external apps
Change-Id: Ie13d438716054260e03ff54ac752d9f072fb9d76
diff --git a/src/app/extender/services/onboard.service.spec.ts b/src/app/extender/services/onboard.service.spec.ts
new file mode 100644
index 0000000..f9373c9
--- /dev/null
+++ b/src/app/extender/services/onboard.service.spec.ts
@@ -0,0 +1,69 @@
+import * as angular from 'angular';
+import 'angular-mocks';
+import 'angular-resource';
+import {Subject} from 'rxjs';
+import {XosOnboarder, IXosOnboarder} from './onboard.service';
+import {IWSEventService} from '../../datasources/websocket/global';
+
+let service, $ocLazyLoad;
+
+const subject = new Subject();
+
+const MockWs: IWSEventService = {
+ list() {
+ return subject.asObservable();
+ }
+};
+
+const MockPromise = {
+ then: (cb) => {
+ cb('done');
+ return MockPromise;
+ },
+ catch: (cb) => {
+ cb('err');
+ return MockPromise;
+ }
+};
+
+const MockLoad = {
+ load: () => {
+ return MockPromise;
+ }
+};
+
+describe('The XosOnboarder service', () => {
+
+ beforeEach(() => {
+
+ angular
+ .module('XosOnboarder', [])
+ .value('WebSocket', MockWs)
+ .value('$ocLazyLoad', MockLoad)
+ .service('XosOnboarder', XosOnboarder);
+
+ angular.mock.module('XosOnboarder');
+ });
+
+ beforeEach(angular.mock.inject((
+ XosOnboarder: IXosOnboarder,
+ _$ocLazyLoad_: any
+ ) => {
+ $ocLazyLoad = _$ocLazyLoad_;
+ spyOn($ocLazyLoad, 'load').and.callThrough();
+ service = XosOnboarder;
+ }));
+
+ describe('when receive an event', () => {
+ it('should use $ocLazyLoad to add modules to the app', () => {
+ subject.next({
+ msg: {
+ app: 'sample',
+ files: ['vendor.js', 'app.js']
+ }
+ });
+ expect($ocLazyLoad.load).toHaveBeenCalledWith('vendor.js');
+ expect($ocLazyLoad.load).toHaveBeenCalledWith('app.js');
+ });
+ });
+});