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 * ================================================================================
23 describe('Controller: NewAdminCtrl ', () => {
24 beforeEach(module('ecompApp'));
26 beforeEach(inject((_CacheFactory_)=> {
27 _CacheFactory_.destroyAll();
31 let newCtrl, $controller, $q, $rootScope, $log;
33 beforeEach(inject((_$controller_, _$q_, _$rootScope_, _$log_)=> {
34 [$controller, $q, $rootScope, $log] = [_$controller_, _$q_, _$rootScope_, _$log_];
37 let deferredAdminAppsRoles, deferredUpdateRolesRes;
38 let adminsServiceMock;
40 [deferredAdminAppsRoles, deferredUpdateRolesRes] = [$q.defer(), $q.defer()];
42 adminsServiceMock = jasmine.createSpyObj('adminsServiceMock', ['getAdminAppsRoles', 'updateAdminAppsRoles']);
44 adminsServiceMock.getAdminAppsRoles.and.returnValue(deferredAdminAppsRoles.promise);
45 adminsServiceMock.updateAdminAppsRoles.and.returnValue(deferredUpdateRolesRes.promise);
47 newCtrl = $controller('NewAdminModalCtrl', {
49 adminsService: adminsServiceMock,
54 it('should init default values when loading the controller', ()=> {
55 expect(newCtrl.dialogState).toBe(1);
56 expect(newCtrl.selectedUser).toBe(null);
59 it('should populate admin apps roles and move to the next screen when adminsService.getAdminAppsRoles succeeded', ()=> {
60 let userApps = {appsRoles: [{id: 1, isAdmin: false}, {id: 2, isAdmin: true}]};
61 deferredAdminAppsRoles.resolve(userApps);
63 newCtrl.selectedUser = {orgUserId: 'orgUserId'};
65 newCtrl.getAdminAppsRoles();
68 expect(adminsServiceMock.getAdminAppsRoles).toHaveBeenCalledWith(newCtrl.selectedUser.userId);
69 expect(newCtrl.adminAppsRoles).toEqual(userApps.appsRoles);
70 expect(newCtrl.dialogState).toBe(2);
73 it('should log the error when adminsService.getAdminAppsRoles fails', ()=> {
75 deferredAdminAppsRoles.reject('some error');
77 newCtrl.searchUsersInProgress = false;
78 newCtrl.selectedUser = {orgUserId: 'orgUserId'};
80 newCtrl.getAdminAppsRoles();
83 expect($log.error).toHaveBeenCalled();
85 it('should log the error when trying to getAdminAppsRoles without selecting user ', ()=> {
88 newCtrl.searchUsersInProgress = false;
89 newCtrl.selectedUser = null;
91 newCtrl.getAdminAppsRoles();
94 expect($log.error).toHaveBeenCalled();
97 it('should set isAdmin as true when adding app via the dropdown menu', ()=> {
98 newCtrl.adminAppsRoles = [{id: 1, isAdmin: false},{id: 2, isAdmin: true}];
99 $rootScope.$apply('newAdmin.selectedNewApp = null');
100 $rootScope.$apply('newAdmin.selectedNewApp = {id: 1, isAdmin: true}');
102 expect(newCtrl.adminAppsRoles[0].isAdmin).toBe(true);
103 expect(newCtrl.selectedNewApp).toBe(null);
106 it('should close the modal when updating apps roles succeeded', ()=> {
107 $rootScope.closeThisDialog = () => {};
108 spyOn($rootScope,'closeThisDialog');
110 newCtrl.selectedUser = {orgUserId: 'orgUserId'};
111 newCtrl.adminAppsRoles = [{id: 1}];
113 deferredUpdateRolesRes.resolve();
114 newCtrl.updateAdminAppsRoles();
117 expect(adminsServiceMock.updateAdminAppsRoles).toHaveBeenCalledWith({userId: newCtrl.selectedUser.userId, appsRoles: newCtrl.adminAppsRoles});
118 expect($rootScope.closeThisDialog).toHaveBeenCalled();
120 it('should log the error when updating apps roles fails', ()=> {
121 newCtrl.selectedUser = {orgUserId: 'orgUserId'};
122 newCtrl.adminAppsRoles = [{id: 1}];
125 deferredUpdateRolesRes.reject();
126 newCtrl.updateAdminAppsRoles();
128 expect($log.error).toHaveBeenCalled();