nexus site path corrected
[portal.git] / ecomp-portal-FE / client / app / views / admins / add-admin-dialogs / new-admin.controller.spec.js
1 /*-
2  * ================================================================================
3  * eCOMP Portal
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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  * ================================================================================
19  */
20
21 'use strict';
22
23 describe('Controller: NewAdminCtrl ', () => {
24     beforeEach(module('ecompApp'));
25
26     beforeEach(inject((_CacheFactory_)=> {
27         _CacheFactory_.destroyAll();
28     }));
29
30
31     let newCtrl, $controller, $q, $rootScope, $log;
32
33     beforeEach(inject((_$controller_, _$q_, _$rootScope_, _$log_)=> {
34         [$controller, $q, $rootScope, $log] = [_$controller_, _$q_, _$rootScope_, _$log_];
35     }));
36
37     let deferredAdminAppsRoles, deferredUpdateRolesRes;
38     let adminsServiceMock;
39     beforeEach(()=> {
40         [deferredAdminAppsRoles, deferredUpdateRolesRes] = [$q.defer(), $q.defer()];
41
42         adminsServiceMock = jasmine.createSpyObj('adminsServiceMock', ['getAdminAppsRoles', 'updateAdminAppsRoles']);
43
44         adminsServiceMock.getAdminAppsRoles.and.returnValue(deferredAdminAppsRoles.promise);
45         adminsServiceMock.updateAdminAppsRoles.and.returnValue(deferredUpdateRolesRes.promise);
46
47         newCtrl = $controller('NewAdminModalCtrl', {
48             $log: $log,
49             adminsService: adminsServiceMock,
50             $scope: $rootScope
51         });
52     });
53
54     it('should init default values when loading the controller', ()=> {
55         expect(newCtrl.dialogState).toBe(1);
56         expect(newCtrl.selectedUser).toBe(null);
57     });
58
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);
62
63         newCtrl.selectedUser = {orgUserId: 'orgUserId'};
64
65         newCtrl.getAdminAppsRoles();
66         $rootScope.$apply();
67
68         expect(adminsServiceMock.getAdminAppsRoles).toHaveBeenCalledWith(newCtrl.selectedUser.userId);
69         expect(newCtrl.adminAppsRoles).toEqual(userApps.appsRoles);
70         expect(newCtrl.dialogState).toBe(2);
71     });
72
73     it('should  log the error when adminsService.getAdminAppsRoles fails', ()=> {
74         spyOn($log, 'error');
75         deferredAdminAppsRoles.reject('some error');
76
77         newCtrl.searchUsersInProgress = false;
78         newCtrl.selectedUser = {orgUserId: 'orgUserId'};
79
80         newCtrl.getAdminAppsRoles();
81         $rootScope.$apply();
82
83         expect($log.error).toHaveBeenCalled();
84     });
85     it('should  log the error when trying to getAdminAppsRoles without selecting user ', ()=> {
86         spyOn($log, 'error');
87
88         newCtrl.searchUsersInProgress = false;
89         newCtrl.selectedUser = null;
90
91         newCtrl.getAdminAppsRoles();
92         $rootScope.$apply();
93
94         expect($log.error).toHaveBeenCalled();
95     });
96
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}');
101
102         expect(newCtrl.adminAppsRoles[0].isAdmin).toBe(true);
103         expect(newCtrl.selectedNewApp).toBe(null);
104     });
105
106     it('should close the modal when updating apps roles succeeded', ()=> {
107         $rootScope.closeThisDialog = () => {};
108         spyOn($rootScope,'closeThisDialog');
109
110         newCtrl.selectedUser = {orgUserId: 'orgUserId'};
111         newCtrl.adminAppsRoles = [{id: 1}];
112
113         deferredUpdateRolesRes.resolve();
114         newCtrl.updateAdminAppsRoles();
115         $rootScope.$apply();
116
117         expect(adminsServiceMock.updateAdminAppsRoles).toHaveBeenCalledWith({userId: newCtrl.selectedUser.userId, appsRoles: newCtrl.adminAppsRoles});
118         expect($rootScope.closeThisDialog).toHaveBeenCalled();
119     });
120     it('should log the error when updating apps roles fails', ()=> {
121         newCtrl.selectedUser = {orgUserId: 'orgUserId'};
122         newCtrl.adminAppsRoles = [{id: 1}];
123
124         spyOn($log,'error');
125         deferredUpdateRolesRes.reject();
126         newCtrl.updateAdminAppsRoles();
127         $rootScope.$apply();
128         expect($log.error).toHaveBeenCalled();
129     });
130 });