Added subscriber as root for the service chain
diff --git a/gui/ngXosViews/serviceTopology/spec/sample.test.js b/gui/ngXosViews/serviceTopology/spec/sample.test.js
index 4ffec78..8b490e7 100644
--- a/gui/ngXosViews/serviceTopology/spec/sample.test.js
+++ b/gui/ngXosViews/serviceTopology/spec/sample.test.js
@@ -1,37 +1,126 @@
'use strict';
-describe('The User List', () => {
+describe('The Service Relation Service', () => {
- var scope, element, isolatedScope, httpBackend;
+ var Service;
beforeEach(module('xos.serviceTopology'));
beforeEach(module('templates'));
- beforeEach(inject(function($httpBackend, $compile, $rootScope){
-
- httpBackend = $httpBackend;
- // Setting up mock request
- $httpBackend.expectGET('/xos/users/?no_hyperlinks=1').respond([
- {
- email: 'teo@onlab.us',
- firstname: 'Matteo',
- lastname: 'Scandolo'
- }
- ]);
-
- scope = $rootScope.$new();
- element = angular.element('<users-list></users-list>');
- $compile(element)(scope);
- scope.$digest();
- isolatedScope = element.isolateScope().vm;
+ // inject the cartService
+ beforeEach(inject(function (_ServiceRelation_) {
+ // The injector unwraps the underscores (_) from around the parameter names when matching
+ Service = _ServiceRelation_;
}));
- it('should load 1 users', () => {
- httpBackend.flush();
- expect(isolatedScope.users.length).toBe(1);
- expect(isolatedScope.users[0].email).toEqual('teo@onlab.us');
- expect(isolatedScope.users[0].firstname).toEqual('Matteo');
- expect(isolatedScope.users[0].lastname).toEqual('Scandolo');
+ describe('given a service', () => {
+
+ const levelRelations = [
+ {
+ subscriber_service: 1
+ },
+ {
+ subscriber_service: 1
+ },
+ {
+ subscriber_service: 2
+ }
+ ];
+
+ it('should find all involved relations', () => {
+ expect(typeof Service.findLevelRelation).toBe('function');
+ let levelRelation = Service.findLevelRelation(levelRelations, 1);
+ expect(levelRelation.length).toBe(2);
+ });
});
+ describe('given a set of relation', () => {
+
+ const levelRelations = [
+ {
+ provider_service: 1
+ },
+ {
+ provider_service: 2
+ }
+ ];
+
+ const services = [
+ {
+ id: 1
+ },
+ {
+ id: 2
+ },
+ {
+ id: 3
+ }
+ ];
+
+ it('should find all the provider service', () => {
+ expect(typeof Service.findLevelServices).toBe('function');
+ let levelServices = Service.findLevelServices(levelRelations, services);
+ expect(levelServices.length).toBe(2);
+ });
+ });
+
+ describe('given a list of services and a list of relations', () => {
+
+ const services = [
+ {
+ id: 1,
+ humanReadableName: 'service-1'
+ },
+ {
+ id: 2,
+ humanReadableName: 'service-2'
+ },
+ {
+ id: 3,
+ humanReadableName: 'service-3'
+ },
+ {
+ id: 4,
+ humanReadableName: 'service-4'
+ }
+ ];
+
+ const relations = [
+ {
+ provider_service: 2,
+ subscriber_service: 1,
+ },
+ {
+ provider_service: 3,
+ subscriber_service: 2
+ },
+ {
+ provider_service: 4,
+ subscriber_service: 1
+ },
+ {
+ subscriber_root: 1,
+ provider_service: 1
+ }
+ ];
+
+ it('should return a tree ordered by relations', () => {
+ let tree = Service.buildServiceTree(services, relations);
+
+ expect(tree.name).toBe('fakeSubs');
+ expect(tree.parent).toBeNull();
+ expect(tree.children.length).toBe(1);
+
+ expect(tree.children[0].name).toBe('service-1');
+ expect(tree.children[0].parent).toBeNull();
+ expect(tree.children[0].children.length).toBe(2);
+
+ expect(tree.children[0].children[0].name).toBe('service-2');
+ expect(tree.children[0].children[0].children[0].name).toBe('service-3');
+
+ expect(tree.children[0].children[1].name).toBe('service-4');
+ });
+ });
+
+
});
\ No newline at end of file