/*-
* ============LICENSE_START=======================================================
* SDC
* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END=========================================================
*/
///
describe("test catalog-view", () => {
let $controllerMock:ng.IControllerService;
let $qMock:ng.IQService;
let $httpBackendMock:ng.IHttpBackendService;
let $scopeMock:Sdc.ViewModels.ICatalogViewModelScope;
let $stateMock:ng.ui.IStateService;
let $stateParams:any;
let entityServiceMock;
let cacheServiceMock;
beforeEach(angular.mock.module('sdcApp'));
let getAllEntitiesResponseMock = [
{
"uniqueId": "855acdc7-7976-4913-9fa6-25220bd5a069",
"uuid": "8bc54f94-082c-42fa-9049-84767df3ff05",
"contactId": "qa1234",
"category": "VoIP Call Control",
"creationDate": 1447234712398,
"description": "ddddd",
"highestVersion": true,
"icon": "mobility",
"lastUpdateDate": 1447234712398,
"lastUpdaterUserId": "cs0008",
"lastUpdaterFullName": "Carlos Santana",
"lifecycleState": "NOT_CERTIFIED_CHECKOUT",
"distributionStatus": "DISTRIBUTION_NOT_APPROVED",
"projectCode": "233233",
"name": "mas mas mas mas mas mas mas mas mas mas mas mas ma",
"version": "0.1",
"type": 0,
"tags": [
"mas mas mas mas mas mas mas mas mas mas mas mas ma"
],
"systemName": "MasMasMasMasMasMasMasMasMasMasMasMasMa",
"vnf": true,
"$$hashKey": "object:30"
},
{
"uniqueId": "4bb577ce-cb2c-4cb7-bb39-58644b5e73cb",
"uuid": "e27f4723-c9ec-4160-89da-dbf84d19a7e3",
"contactId": "qa1111",
"category": "Mobility",
"creationDate": 1447238503181,
"description": "aqa",
"highestVersion": true,
"icon": "call_controll",
"lastUpdateDate": 1447248991388,
"lastUpdaterUserId": "jm0007",
"lastUpdaterFullName": "Joni Mitchell",
"lifecycleState": "CERTIFIED",
"distributionStatus": "DISTRIBUTION_REJECTED",
"projectCode": "111111",
"name": "martin18",
"version": "1.0",
"type": 0,
"tags": [
"martin18"
],
"systemName": "Martin18",
"vnf": true
},
{
"uniqueId": "f192f4a6-7fbf-42e4-a546-37509df28dc1",
"uuid": "0b77dc0d-222e-4d10-85cd-e420c9481417",
"contactId": "fd1212",
"category": "Application Layer 4+/Web Server",
"creationDate": 1447233679778,
"description": "geefw",
"highestVersion": true,
"icon": "database",
"lastUpdateDate": 1447233681582,
"lastUpdaterUserId": "cs0008",
"lastUpdaterFullName": "Carlos Santana",
"lifecycleState": "NOT_CERTIFIED_CHECKOUT",
"name": "ger",
"version": "0.1",
"type": 1,
"tags": [
"ger"
],
"vendorName": "fewwfe",
"vendorRelease": "fewew",
"systemName": "Ger",
"$$hashKey": "object:31"
},
{
"uniqueId": "78392d08-1859-47c2-b1f2-1a35b7f8c30e",
"uuid": "8cdd63b2-6a62-4376-9012-624f424f71d4",
"contactId": "qw1234",
"category": "Application Layer 4+/Application Servers",
"creationDate": 1447234046114,
"description": "test",
"highestVersion": true,
"icon": "router",
"lastUpdateDate": 1447234050545,
"lastUpdaterUserId": "cs0008",
"lastUpdaterFullName": "Carlos Santana",
"lifecycleState": "NOT_CERTIFIED_CHECKOUT",
"name": "test",
"version": "0.1",
"type": 1,
"tags": [
"test"
],
"vendorName": "test",
"vendorRelease": "test",
"systemName": "Test",
"$$hashKey": "object:32"
},
{
"uniqueId": "939e153d-2236-410f-b4a9-3b4bf8c79c9e",
"uuid": "84862547-4f56-4058-b78e-40df5f374d7e",
"contactId": "qw1234",
"category": "Application Layer 4+/Application Servers",
"creationDate": 1447235242560,
"description": "jlk",
"highestVersion": true,
"icon": "database",
"lastUpdateDate": 1447235328062,
"lastUpdaterUserId": "cs0008",
"lastUpdaterFullName": "Carlos Santana",
"lifecycleState": "NOT_CERTIFIED_CHECKIN",
"name": "new",
"version": "0.1",
"type": 1,
"tags": [
"new"
],
"vendorName": "e",
"vendorRelease": "e",
"systemName": "New",
"$$hashKey": "object:33"
},
{
"uniqueId": "ece818e0-fd59-477a-baf6-e27461a7ce23",
"uuid": "8db823c2-6a9c-4636-8676-f5e713270dd7",
"contactId": "uf2345",
"category": "Network Layer 2-3/Router",
"creationDate": 1447235352429,
"description": "u",
"highestVersion": true,
"icon": "network",
"lastUpdateDate": 1447235370064,
"lastUpdaterUserId": "cs0008",
"lastUpdaterFullName": "Carlos Santana",
"lifecycleState": "NOT_CERTIFIED_CHECKOUT",
"name": "u",
"version": "0.1",
"type": 1,
"tags": [
"u"
],
"vendorName": "u",
"vendorRelease": "u",
"systemName": "U",
"$$hashKey": "object:34"
}
];
let resourceCategoriesResponseMock = [{"name":"Network L2-3","normalizedName":"network l2-3","uniqueId":"resourceNewCategory.network l2-3","subcategories":[{"name":"Gateway","normalizedName":"gateway","uniqueId":"resourceNewCategory.network l2-3.gateway","icons":["gateway"]},{"name":"Infrastructure","normalizedName":"infrastructure","uniqueId":"resourceNewCategory.network l2-3.infrastructure","icons":["ucpe"]},{"name":"WAN Connectors","normalizedName":"wan connectors","uniqueId":"resourceNewCategory.network l2-3.wan connectors","icons":["network","connector","port"]},{"name":"LAN Connectors","normalizedName":"lan connectors","uniqueId":"resourceNewCategory.network l2-3.lan connectors","icons":["network","connector","port"]},{"name":"Router","normalizedName":"router","uniqueId":"resourceNewCategory.network l2-3.router","icons":["router","vRouter"]}]},{"name":"Network L4+","normalizedName":"network l4+","uniqueId":"resourceNewCategory.network l4+","subcategories":[{"name":"Common Network Resources","normalizedName":"common network resources","uniqueId":"resourceNewCategory.network l4+.common network resources","icons":["network"]}]},{"name":"Application L4+","normalizedName":"application l4+","uniqueId":"resourceNewCategory.application l4+","subcategories":[{"name":"Load Balancer","normalizedName":"load balancer","uniqueId":"resourceNewCategory.application l4+.load balancer","icons":["loadBalancer"]},{"name":"Media Servers","normalizedName":"media servers","uniqueId":"resourceNewCategory.application l4+.media servers","icons":["applicationServer"]},{"name":"Application Server","normalizedName":"application server","uniqueId":"resourceNewCategory.application l4+.application server","icons":["applicationServer"]},{"name":"Database","normalizedName":"database","uniqueId":"resourceNewCategory.application l4+.database","icons":["database"]},{"name":"Call Control","normalizedName":"call control","uniqueId":"resourceNewCategory.application l4+.call control","icons":["call_controll"]},{"name":"Border Element","normalizedName":"border element","uniqueId":"resourceNewCategory.application l4+.border element","icons":["borderElement"]},{"name":"Web Server","normalizedName":"web server","uniqueId":"resourceNewCategory.application l4+.web server","icons":["applicationServer"]},{"name":"Firewall","normalizedName":"firewall","uniqueId":"resourceNewCategory.application l4+.firewall","icons":["firewall"]}]},{"name":"Generic","normalizedName":"generic","uniqueId":"resourceNewCategory.generic","subcategories":[{"name":"Database","normalizedName":"database","uniqueId":"resourceNewCategory.generic.database","icons":["database"]},{"name":"Abstract","normalizedName":"abstract","uniqueId":"resourceNewCategory.generic.abstract","icons":["objectStorage","compute"]},{"name":"Network Elements","normalizedName":"network elements","uniqueId":"resourceNewCategory.generic.network elements","icons":["network","connector"]},{"name":"Infrastructure","normalizedName":"infrastructure","uniqueId":"resourceNewCategory.generic.infrastructure","icons":["connector"]}]},{"name":"NewCategory","normalizedName":"newcategory","uniqueId":"resourceNewCategory.newcategory","subcategories":[{"name":"MyNewSubCategory","normalizedName":"mynewsubcategory","uniqueId":"resourceNewCategory.newcategory.mynewsubcategory"}]}];
let getAllEntitiesDefered:ng.IDeferred = null;
beforeEach(angular.mock.inject((_$controller_:ng.IControllerService,
_$httpBackend_:ng.IHttpBackendService,
_$rootScope_,
_$q_:ng.IQService,
_$state_:ng.ui.IStateService,
_$stateParams_:any) => {
$controllerMock = _$controller_;
$httpBackendMock = _$httpBackend_
$scopeMock = _$rootScope_.$new();
$qMock = _$q_;
$stateMock = _$state_;
$stateParams = _$stateParams_;
//handle all http request thet not relevant to the tests
$httpBackendMock.expectGET(/.*languages\/en_US.json.*/).respond(200, JSON.stringify({}));
$httpBackendMock.expectGET(/.*rest\/version.*/).respond(200, JSON.stringify({}));
$httpBackendMock.expectGET(/.*configuration\/ui.*/).respond(200, JSON.stringify({}));
$httpBackendMock.expectGET(/.*user\/authorize.*/).respond(200, JSON.stringify({}));
$httpBackendMock.expectGET(/.*categories\/services.*/).respond(200, JSON.stringify({}));
$httpBackendMock.expectGET(/.*categories\/resources.*/).respond(200, JSON.stringify({}));
$httpBackendMock.expectGET(/.*categories\/products.*/).respond(200, JSON.stringify({}));
$httpBackendMock.expectGET('http://feHost:8181/sdc1/feProxy/rest/version').respond(200, JSON.stringify({}));
/**
* Mock the service
* @type {any}
*/
getAllEntitiesDefered = $qMock.defer();
getAllEntitiesDefered.resolve(getAllEntitiesResponseMock);
cacheServiceMock = jasmine.createSpyObj('cacheServiceMock', ['get']);
cacheServiceMock.get.and.callFake(function(string){return resourceCategoriesResponseMock;});
/*
cacheServiceMock.get.and.callFake(function(value:string){
switch(value){
case 'serviceCategories':
console.log('serviceCategories');
break;
case 'resourceCategories':
console.log('resourceCategories');
break;
case 'productCategories':
console.log('productCategories');
break;
default :
console.log('default');
break;
}
});
*/
entityServiceMock = jasmine.createSpyObj('entityServiceMock', ['getCatalog']);
entityServiceMock.getCatalog.and.returnValue(getAllEntitiesDefered.promise);
// $stateParams['show'] = '';
/**
* Need to inject into the controller only the objects that we want to MOCK
* those that we need to change theirs behaviors
*/
$controllerMock(Sdc.ViewModels.CatalogViewModel, {
'$scope': $scopeMock,
'$stateParams': $stateParams,
'Sdc.Services.EntityService': entityServiceMock,
'Sdc.Services.CacheService': cacheServiceMock
});
}));
beforeEach(function () {
});
describe("test GUI events on checkbox type resource click", function () {
/**
* The function checks only for resource type.
* Select the Resource and verify that the sub resources are selected.
*
*/
it('test onComponentTypeClick (check select checkbox of Resource type)', function () {
$scopeMock.$apply();
$scopeMock.checkboxesFilter.selectedComponentTypes = ['Resource'];
$scopeMock.gui.onComponentTypeClick('Resource');
expect($scopeMock.checkboxesFilter.selectedResourceSubTypes.length === 4).toBeTruthy();
});
/**
* The function checks only for resource type.
* Un select the Resource and verify that the sub resources are selected.
*
*/
it('test onComponentTypeClick (check un select checkbox of Resource type)', function () {
$scopeMock.$apply();
$scopeMock.gui.onComponentTypeClick('Resource');
expect($scopeMock.checkboxesFilter.selectedResourceSubTypes.length === 0).toBeTruthy();
});
});
describe("test GUI events on checkbox main category click -> sub categories are selected", function () {
/**
* The function checks that after selecting 2 main categories, the subcategories are selected also.
*
*/
it('test onComponentTypeClick (check select checkbox of Resource type)', function () {
let category1 = resourceCategoriesResponseMock[0];
let category2 = resourceCategoriesResponseMock[1];
$scopeMock.$apply();
$scopeMock.checkboxesFilter.selectedCategoriesModel = [category1.uniqueId, category2.uniqueId];
$scopeMock.gui.onCategoryClick(category1);
$scopeMock.gui.onCategoryClick(category2);
expect($scopeMock.checkboxesFilter.selectedCategoriesModel.length===8).toBeTruthy();
});
});
});