2 * ================================================================================
\r
4 * ================================================================================
\r
5 * Copyright (C) 2017 AT&T Intellectual Property
\r
6 * ================================================================================
\r
7 * Licensed under the Apache License, Version 2.0 (the "License");
\r
8 * you may not use this file except in compliance with the License.
\r
9 * You may obtain a copy of the License at
\r
11 * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * Unless required by applicable law or agreed to in writing, software
\r
14 * distributed under the License is distributed on an "AS IS" BASIS,
\r
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 * See the License for the specific language governing permissions and
\r
17 * limitations under the License.
\r
18 * ================================================================================
\r
21 * Created by nnaffar on 12/20/15.
\r
25 describe('Controller: NewUserModalCtrl ', () => {
\r
26 beforeEach(module('testUtils'));
\r
27 beforeEach(module('ecompApp'));
\r
29 let promisesTestUtils;
\r
30 //destroy $http default cache before starting to prevent the error 'default cache already exists'
\r
31 //_promisesTestUtils_ comes from testUtils for promises resolve/reject
\r
32 beforeEach(inject((_CacheFactory_, _promisesTestUtils_)=> {
\r
33 _CacheFactory_.destroyAll();
\r
34 promisesTestUtils = _promisesTestUtils_;
\r
37 let newUser, $controller, $q, $rootScope, $log, $scope;
\r
39 let applicationsServiceMock, usersServiceMock, confirmBoxServiceMock;
\r
40 let deferredAdminApps, deferredUsersAccounts, deferredUsersAppRoles, deferredUsersAppRoleUpdate;
\r
42 beforeEach(inject((_$controller_, _$q_, _$rootScope_, _$log_)=> {
\r
43 $rootScope = _$rootScope_;
\r
45 $controller = _$controller_;
\r
50 [deferredAdminApps, deferredUsersAccounts, deferredUsersAppRoles, deferredUsersAppRoleUpdate] = [$q.defer(),$q.defer(), $q.defer(), $q.defer()];
\r
52 /*applicationsServiceMock = {
\r
53 getAdminApps: () => {
\r
54 var promise = () => {return deferredAdminApps.promise};
\r
55 var cancel = jasmine.createSpy();
\r
63 confirmBoxServiceMock = {
\r
65 var promise = () => {return deferredAdminApps.promise};
\r
66 var cancel = jasmine.createSpy();
\r
74 applicationsServiceMock = jasmine.createSpyObj('applicationsServiceMock', ['getAdminAppsSimpler']);
\r
75 applicationsServiceMock.getAdminAppsSimpler.and.returnValue(deferredAdminApps.promise);
\r
77 usersServiceMock = jasmine.createSpyObj('usersServiceMock', ['getAccountUsers','getUserAppRoles','updateUserAppsRoles']);
\r
79 //applicationsServiceMock.getAdminApps().promise().and.returnValue(deferredAdminApps.promise);
\r
80 usersServiceMock.getAccountUsers.and.returnValue(deferredUsersAccounts.promise);
\r
81 usersServiceMock.getUserAppRoles.and.returnValue(deferredUsersAppRoles.promise);
\r
82 usersServiceMock.updateUserAppsRoles.and.returnValue(deferredUsersAppRoleUpdate.promise);
\r
84 $scope = $rootScope.$new();
\r
85 newUser = $controller('NewUserModalCtrl', {
\r
88 usersService: usersServiceMock,
\r
89 applicationsService: applicationsServiceMock,
\r
90 confirmBoxService: confirmBoxServiceMock
\r
92 //$scope.users = users;
\r
96 scope = $rootScope.$new();
\r
97 newUser = $controller('NewUserModalCtrl', {
\r
100 usersService: usersService,
\r
101 applicationsService: applicationsService,
\r
102 confirmBoxService: confirmBoxService
\r
107 it('should open modal window without user when no user is selected', ()=> {
\r
108 expect(newUser.selectedUser).toBe(null);
\r
111 it('should open modal window with selectedUser apps roles when user is selected', ()=> {
\r
112 let roles = {apps: [{id: 1, appRoles: [{id: 3, isApplied: true}]}]};
\r
113 let someUser = {orgUserId: 'asdfjl'};
\r
115 deferredUsersAppRoles.resolve(roles);
\r
116 deferredAdminApps.resolve(roles.apps);
\r
118 $scope.ngDialogData = {
\r
119 selectedUser: someUser,
\r
123 //inject ngDialogData to the scope controller
\r
124 newUser = $controller('NewUserModalCtrl', {
\r
127 usersService: usersServiceMock,
\r
128 applicationsService: applicationsServiceMock,
\r
129 confirmBoxService: confirmBoxServiceMock
\r
132 newUser.getUserAppsRoles();
\r
135 expect(newUser.selectedUser).toBe(someUser);
\r
136 expect(newUser.adminApps).toEqual(roles.apps);
\r
139 it('should push to apps order list only apps that has applied roles when initializing', () => {
\r
140 let roles = {apps: [{appId: 13, appRoles: [{id: 3, isApplied: true}]},{appId: 20, appRoles: [{id: 3, isApplied: false}]}]};
\r
141 let someUser = {orgUserId: 'asdfjl'};
\r
143 deferredUsersAppRoles.resolve(roles);
\r
144 //deferredAdminApps.resolve(roles.apps);
\r
146 $scope.ngDialogData = {
\r
147 selectedUser: someUser,
\r
151 //inject ngDialogData to the scope controller
\r
152 newUser = $controller('NewUserModalCtrl', {
\r
155 usersService: usersServiceMock,
\r
156 applicationsService: applicationsServiceMock,
\r
157 confirmBoxService: confirmBoxServiceMock
\r
162 // expect(newUser.appsOrder).toEqual([13]);
\r
165 it('should push app to apps order list when applying at least one role to user from app', () => {
\r
166 let roles = {apps: [{appId: 13, appRoles: [{id: 3, isApplied: true}]},{appId: 20, appRoles: [{id: 3, isApplied: false}]}]};
\r
167 let someUser = {orgUserId: 'asdfjl'};
\r
169 // promisesTestUtils.resolvePromise(usersService, 'getUserAppsRoles', roles);
\r
170 deferredUsersAppRoles.resolve(roles);
\r
172 $scope.ngDialogData = {
\r
173 selectedUser: someUser,
\r
177 //inject ngDialogData to the scope controller
\r
178 newUser = $controller('NewUserModalCtrl', {
\r
181 usersService: usersServiceMock,
\r
182 applicationsService: applicationsServiceMock,
\r
183 confirmBoxService: confirmBoxServiceMock
\r
187 //newUser.updateAppsOrder({appId: 39, appRoles: [{id: 13, isApplied: true}]});
\r
190 // expect(newUser.appsOrder).toEqual([13, 39]);
\r
194 it('should remove app from list when removing all user roles in it', () => {
\r
195 let roles = {apps: [{appName: 'aaa', appId: 13, appRoles: [{id: 3, isApplied: true}]},{appName: 'vvv', appId: 20, appRoles: [{id: 3, isApplied: true}]}]};
\r
196 let someUser = {orgUserId: 'asdfjl'};
\r
198 // promisesTestUtils.resolvePromise(usersService, 'getUserAppsRoles', roles);
\r
199 promisesTestUtils.resolvePromise(confirmBoxServiceMock, 'deleteItem', true);
\r
201 deferredUsersAppRoles.resolve(roles);
\r
203 $scope.ngDialogData = {
\r
204 selectedUser: someUser,
\r
208 //inject ngDialogData to the scope controller
\r
209 newUser = $controller('NewUserModalCtrl', {
\r
212 usersService: usersServiceMock,
\r
213 applicationsService: applicationsServiceMock,
\r
214 confirmBoxService: confirmBoxServiceMock
\r
218 newUser.deleteApp(roles.apps[0]);
\r
221 // expect(newUser.appsOrder).toEqual([20]);
\r
224 it('should close the modal when update changes succeeded', () => {
\r
225 let roles = {apps: [{appName: 'aaa', appId: 13, appRoles: [{id: 3, isApplied: true}]},{appName: 'vvv', appId: 20, appRoles: [{id: 3, isApplied: true}]}]};
\r
226 let someUser = {orgUserId: 'asdfjl'};
\r
227 //promisesTestUtils.resolvePromise(usersServiceMock, 'getUserAppsRoles', roles);
\r
228 //promisesTestUtils.resolvePromise(usersServiceMock, 'updateUserAppsRoles');
\r
229 deferredUsersAppRoles.resolve(roles);
\r
230 deferredUsersAppRoleUpdate.resolve();
\r
231 deferredAdminApps.resolve(roles.apps);
\r
233 $scope.ngDialogData = {
\r
234 selectedUser: someUser,
\r
238 //inject ngDialogData to the scope controller
\r
239 newUser = $controller('NewUserModalCtrl', {
\r
242 usersService: usersServiceMock,
\r
243 applicationsService: applicationsServiceMock,
\r
244 confirmBoxService: confirmBoxServiceMock
\r
246 $scope.closeThisDialog = function(){};
\r
247 spyOn($scope, 'closeThisDialog');
\r
249 newUser.getUserAppsRoles();
\r
251 newUser.updateUserAppsRoles();
\r
253 expect($scope.closeThisDialog).toHaveBeenCalledWith(true);
\r