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