2 * ================================================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ================================================================================
21 * Created by nnaffar on 12/8/15.
25 describe('Controller: NewAdminCtrl ', () => {
26 beforeEach(module('ecompApp'));
28 //destroy $http default cache before starting to prevent the error 'default cache already exists'
29 beforeEach(inject((_CacheFactory_)=> {
30 _CacheFactory_.destroyAll();
34 let newCtrl, $controller, $q, $rootScope, $log;
36 beforeEach(inject((_$controller_, _$q_, _$rootScope_, _$log_)=> {
37 [$controller, $q, $rootScope, $log] = [_$controller_, _$q_, _$rootScope_, _$log_];
40 let deferredAdminAppsRoles, deferredUpdateRolesRes;
41 let adminsServiceMock;
43 [deferredAdminAppsRoles, deferredUpdateRolesRes] = [$q.defer(), $q.defer()];
45 adminsServiceMock = jasmine.createSpyObj('adminsServiceMock', ['getAdminAppsRoles', 'updateAdminAppsRoles']);
47 adminsServiceMock.getAdminAppsRoles.and.returnValue(deferredAdminAppsRoles.promise);
48 adminsServiceMock.updateAdminAppsRoles.and.returnValue(deferredUpdateRolesRes.promise);
50 newCtrl = $controller('NewAdminModalCtrl', {
52 adminsService: adminsServiceMock,
57 it('should init default values when loading the controller', ()=> {
58 expect(newCtrl.dialogState).toBe(1);
59 expect(newCtrl.selectedUser).toBe(null);
62 it('should populate admin apps roles and move to the next screen when adminsService.getAdminAppsRoles succeeded', ()=> {
63 let userApps = {appsRoles: [{id: 1, isAdmin: false}, {id: 2, isAdmin: true}]};
64 deferredAdminAppsRoles.resolve(userApps);
66 newCtrl.selectedUser = {orgUserId: 'orgUserId'};
68 newCtrl.getAdminAppsRoles();
71 expect(adminsServiceMock.getAdminAppsRoles).toHaveBeenCalledWith(newCtrl.selectedUser.orgUserId);
72 expect(newCtrl.adminAppsRoles).toEqual(userApps.appsRoles);
73 expect(newCtrl.dialogState).toBe(2);
76 it('should log the error when adminsService.getAdminAppsRoles fails', ()=> {
78 deferredAdminAppsRoles.reject('some error');
80 newCtrl.searchUsersInProgress = false;
81 newCtrl.selectedUser = {orgUserId: 'orgUserId'};
83 newCtrl.getAdminAppsRoles();
86 expect($log.error).toHaveBeenCalled();
88 it('should log the error when trying to getAdminAppsRoles without selecting user ', ()=> {
91 newCtrl.searchUsersInProgress = false;
92 newCtrl.selectedUser = null;
94 newCtrl.getAdminAppsRoles();
97 expect($log.error).toHaveBeenCalled();
100 it('should set isAdmin as true when adding app via the dropdown menu', ()=> {
101 newCtrl.adminAppsRoles = [{id: 1, isAdmin: false},{id: 2, isAdmin: true}];
103 $rootScope.$apply('newAdmin.selectedNewApp = null');
104 $rootScope.$apply('newAdmin.selectedNewApp = {id: 1, isAdmin: true}');
106 expect(newCtrl.adminAppsRoles[0].isAdmin).toBe(true);
107 expect(newCtrl.selectedNewApp).toBe(null);
110 it('should close the modal when updating apps roles succeeded', ()=> {
111 $rootScope.closeThisDialog = () => {};
112 spyOn($rootScope,'closeThisDialog');
114 newCtrl.selectedUser = {orgUserId: 'orgUserId'};
115 newCtrl.adminAppsRoles = [{id: 1}];
117 deferredUpdateRolesRes.resolve();
118 newCtrl.updateAdminAppsRoles();
121 expect(adminsServiceMock.updateAdminAppsRoles).toHaveBeenCalledWith({orgUserId: newCtrl.selectedUser.orgUserId, appsRoles: newCtrl.adminAppsRoles});
122 expect($rootScope.closeThisDialog).toHaveBeenCalled();
124 it('should log the error when updating apps roles fails', ()=> {
125 newCtrl.selectedUser = {orgUserId: 'orgUserId'};
126 newCtrl.adminAppsRoles = [{id: 1}];
129 deferredUpdateRolesRes.reject();
130 newCtrl.updateAdminAppsRoles();
132 expect($log.error).toHaveBeenCalled();