/*-
* ============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("dashboard View Model ", () => {
let $controllerMock:ng.IControllerService;
let $qMock:ng.IQService;
let $httpBackendMock:ng.IHttpBackendService;
let $scopeMock:Sdc.ViewModels.IDashboardViewModelScope;
let $stateMock:ng.ui.IStateService;
let $stateParams:any;
let entityServiceMock;
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 getAllEntitiesDefered:ng.IDeferred = null;
beforeEach(angular.mock.module('sdcApp'));
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(/.*resources\/certified\/abstract.*/).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);
entityServiceMock = jasmine.createSpyObj('entityServiceMock', ['getAllComponents']);
entityServiceMock.getAllComponents.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.DashboardViewModel, {
'$scope': $scopeMock,
'$stateParams': $stateParams,
'Sdc.Services.EntityService': entityServiceMock,
});
}));
describe("when Controller 'DashboardViewModel' created", () => {
it('should generate all entities', () => {
$scopeMock.$apply();
expect($scopeMock.components.length).toBe(getAllEntitiesResponseMock.length);
});
it('should show tutorial page ', () => {
$stateParams.show = 'tutorial';
$controllerMock(Sdc.ViewModels.DashboardViewModel, {
'$scope': $scopeMock,
'$stateParams': $stateParams,
'Sdc.Services.EntityService': entityServiceMock,
//to complete injects
});
$scopeMock.$apply();
expect($scopeMock.isFirstTime).toBeTruthy();
expect($scopeMock.showTutorial).toBeTruthy();
});
});
describe("when function 'entitiesCount' invoked", () => {
beforeEach(() => {
$controllerMock(Sdc.ViewModels.DashboardViewModel, {
'$scope': $scopeMock,
'Sdc.Services.EntityService': entityServiceMock,
});
$scopeMock.$apply();
});
it('should return entities count per folder', () => {
});
});
});