51802c13b0a9f8fc8b8072051982c93f07748a81
[portal.git] / ecomp-portal-BE-common-test / src / main / java / org / openecomp / portalapp / portal / test / service / FunctionalMenuMockServiceImplTest.java
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 package org.openecomp.portalapp.portal.test.service;
21
22 import static org.junit.Assert.assertEquals;
23
24 import java.util.ArrayList;
25 import java.util.List;
26
27 import org.junit.Before;
28 import org.junit.Test;
29 import org.junit.runner.RunWith;
30 import org.mockito.InjectMocks;
31 import org.mockito.Mock;
32 import org.mockito.Mockito;
33 import org.mockito.MockitoAnnotations;
34 import org.openecomp.portalapp.portal.domain.FunctionalMenuItemWithAppID;
35 import org.openecomp.portalapp.portal.service.FunctionalMenuService;
36 import org.openecomp.portalapp.portal.service.FunctionalMenuServiceImpl;
37 import org.openecomp.portalapp.portal.transport.FavoritesFunctionalMenuItemJson;
38 import org.openecomp.portalapp.portal.transport.FunctionalMenuItem;
39 import org.openecomp.portalapp.portal.transport.FunctionalMenuRole;
40 import org.openecomp.portalapp.portal.utils.EPCommonSystemProperties;
41 import org.openecomp.portalapp.test.framework.ApplicationCommonContextTestSuite;
42 import org.openecomp.portalsdk.core.service.DataAccessService;
43 import org.openecomp.portalsdk.core.util.SystemProperties;
44 import org.powermock.api.mockito.PowerMockito;
45 import org.powermock.core.classloader.annotations.PrepareForTest;
46 import org.powermock.modules.junit4.PowerMockRunner;
47
48 @RunWith(PowerMockRunner.class)
49 @PrepareForTest({SystemProperties.class, EPCommonSystemProperties.class})
50 public class FunctionalMenuMockServiceImplTest extends ApplicationCommonContextTestSuite {
51
52         @Mock
53         FunctionalMenuService functionalMenuService;
54         
55         @Mock
56         DataAccessService dataAccessService;
57         
58         @Before
59         public void setup() {
60                 MockitoAnnotations.initMocks(this);
61         }
62         
63     @InjectMocks
64         FunctionalMenuServiceImpl functionalMenuServiceImpl= new FunctionalMenuServiceImpl();
65         
66         @Test
67         public void assignHelpURLsTest(){
68                 List<FunctionalMenuItem> menuItems = new ArrayList<FunctionalMenuItem>();
69                 FunctionalMenuItem functionalMenuItem1 = new FunctionalMenuItem();
70                 functionalMenuItem1.text = "Contact Us";
71                 FunctionalMenuItem functionalMenuItem2 = new FunctionalMenuItem();
72                 functionalMenuItem2.text = "Get Access";
73                 FunctionalMenuItem functionalMenuItem3 = new FunctionalMenuItem();
74                 functionalMenuItem3.text = "User Guide";                
75                 menuItems.add(functionalMenuItem1);
76                 menuItems.add(functionalMenuItem2);
77                 menuItems.add(functionalMenuItem3);
78                 
79                 PowerMockito.mockStatic(SystemProperties.class);
80                 Mockito.when(SystemProperties.getProperty(EPCommonSystemProperties.USER_GUIDE_URL)).thenReturn("http://todo_enter_user_guide_link");
81 //              Mockito.doNothing().when(functionalMenuServiceImpl).assignHelpURLs(menuItems);
82                 functionalMenuServiceImpl.assignHelpURLs(menuItems);
83         }
84         
85         @Test
86         public void getFunctionalMenuItemsTest(){
87                 String sql = "SELECT m.menu_id, m.column_num, m.text, m.parent_menu_id, m.url, m.active_yn, r.app_id FROM fn_menu_functional m, "
88                                 + "fn_menu_functional_roles r WHERE m.menu_id = r.menu_id  AND UPPER(m.active_yn) = 'Y'  AND r.role_id != '900'  "
89                                 + "UNION  SELECT m.menu_id, m.column_num, m.text, m.parent_menu_id, m.url, m.active_yn,-1 app_id  FROM fn_menu_functional m  "
90                                 + "WHERE m.url=''  AND UPPER(m.active_yn) = 'Y'";
91                  List<FunctionalMenuItem> actualResult = new ArrayList<FunctionalMenuItem>();
92                  List<FunctionalMenuItem> expectedResult = new ArrayList<FunctionalMenuItem>();
93                  
94                  Mockito.when(dataAccessService.executeSQLQuery(sql, FunctionalMenuItemWithAppID.class, null)).thenReturn(expectedResult);
95                  
96                  actualResult = functionalMenuServiceImpl.getFunctionalMenuItems(true);
97                  assertEquals(actualResult, expectedResult);
98         }
99         
100         @Test
101         public void getFunctionalMenuItemsNegativeTest(){
102                 String sql = "SELECT m.menu_id, m.column_num, m.text, m.parent_menu_id, m.url, m.active_yn, r.app_id FROM fn_menu_functional m, "
103                                 + "fn_menu_functional_roles r WHERE m.menu_id = r.menu_id  AND UPPER(m.active_yn) = 'Y'  AND r.role_id != '900'  "
104                                 + "UNION  SELECT m.menu_id, m.column_num, m.text, m.parent_menu_id, m.url, m.active_yn,-1 app_id  FROM fn_menu_functional m  "
105                                 + "WHERE m.url=''  AND UPPER(m.active_yn) = 'Y'";
106                  List<FunctionalMenuItem> actualResult = new ArrayList<FunctionalMenuItem>();
107                  List<FunctionalMenuItem> expectedResult = new ArrayList<FunctionalMenuItem>();
108                  
109                  Mockito.when(dataAccessService.executeSQLQuery(sql, FunctionalMenuItemWithAppID.class, null)).thenReturn(expectedResult);
110                  
111                  actualResult = functionalMenuServiceImpl.getFunctionalMenuItems(false);
112                  assertEquals(actualResult, expectedResult);
113         }
114         
115         @Test
116         public void getFunctionalMenuItemsForNotificationTreeTest(){
117                 String sql = "SELECT m.menu_id, m.column_num, m.text, m.parent_menu_id, m.url, m.active_yn, r.app_id FROM fn_menu_functional m, fn_menu_functional_roles r "
118                                 + "WHERE m.menu_id = r.menu_id  AND UPPER(m.active_yn) = 'Y'  AND r.role_id != '900'  UNION  SELECT m.menu_id, m.column_num, m.text, m.parent_menu_id,"
119                                 + " m.url, m.active_yn,-1 app_id  FROM fn_menu_functional m  WHERE m.url=''  AND UPPER(m.active_yn) = 'Y'";
120                  List<FunctionalMenuItem> actualResult = new ArrayList<FunctionalMenuItem>();
121                  List<FunctionalMenuItem> expectedResult = new ArrayList<FunctionalMenuItem>();
122                  
123                  Mockito.when(dataAccessService.executeSQLQuery(sql, FunctionalMenuItemWithAppID.class, null)).thenReturn(expectedResult);
124                  
125                  actualResult = functionalMenuServiceImpl.getFunctionalMenuItemsForNotificationTree(true);
126                  assertEquals(actualResult, expectedResult);
127                 
128         }
129         
130         @Test
131         public void getFunctionalMenuItemsForNotificationNegativeTreeTest(){
132                 String sql = "SELECT m.menu_id, m.column_num, m.text, m.parent_menu_id, m.url, m.active_yn, r.app_id FROM fn_menu_functional m, fn_menu_functional_roles r "
133                                 + "WHERE m.menu_id = r.menu_id  AND UPPER(m.active_yn) = 'Y'  AND r.role_id != '900'  UNION  SELECT m.menu_id, m.column_num, m.text, m.parent_menu_id,"
134                                 + " m.url, m.active_yn,-1 app_id  FROM fn_menu_functional m  WHERE m.url=''  AND UPPER(m.active_yn) = 'Y'";
135                  List<FunctionalMenuItem> actualResult = new ArrayList<FunctionalMenuItem>();
136                  List<FunctionalMenuItem> expectedResult = new ArrayList<FunctionalMenuItem>();
137                  
138                  Mockito.when(dataAccessService.executeSQLQuery(sql, FunctionalMenuItemWithAppID.class, null)).thenReturn(expectedResult);
139                  
140                  actualResult = functionalMenuServiceImpl.getFunctionalMenuItemsForNotificationTree(false);
141                  assertEquals(actualResult, expectedResult);            
142         }
143         
144         @Test
145         public void getFunctionalMenuItemsForAppTest(){
146                 String sql = "SELECT DISTINCT m1.menu_id, m1.column_num, m1.text, m1.parent_menu_id, m1.url, m.active_yn  "
147                                 + "FROM fn_menu_functional m, fn_menu_functional m1, fn_menu_functional_ancestors a, fn_menu_functional_roles mr  "
148                                 + "WHERE  mr.app_id='1'  AND mr.menu_id = m.menu_id  AND UPPER(m.active_yn) = 'Y' AND UPPER(m1.active_yn) ='Y' AND a.menu_id = m.menu_id  "
149                                 + "AND a.ancestor_menu_id = m1.menu_id";
150                 Integer appId = 1;
151                 List<FunctionalMenuItem> actualResult = new ArrayList<FunctionalMenuItem>();
152                 List<FunctionalMenuItem> expectedResult = new ArrayList<FunctionalMenuItem>();
153                  
154                  Mockito.when(dataAccessService.executeSQLQuery(sql, FunctionalMenuItemWithAppID.class, null)).thenReturn(expectedResult);
155                  
156                  actualResult = functionalMenuServiceImpl.getFunctionalMenuItemsForApp(appId);
157                  assertEquals(actualResult, expectedResult);
158         }
159         
160         @Test
161         public void getFunctionalMenuItemsForUserTest(){
162                 String orgUserId = "test";
163                 String sql = "SELECT DISTINCT m1.menu_id, m1.column_num, m1.text, m1.parent_menu_id, m1.url, m.active_yn  "
164                                 + "FROM fn_menu_functional m, fn_menu_functional m1, fn_menu_functional_ancestors a,  fn_menu_functional_roles mr, fn_user u , fn_user_role ur  "
165                                 + "WHERE  u.org_user_id='test'  AND u.user_id = ur.user_id  AND ur.app_id = mr.app_id  AND (ur.role_id = mr.role_id      OR ur.role_id = '999')  "
166                                 + "AND m.menu_id = mr.menu_id  AND UPPER(m.active_yn) = 'Y' AND UPPER(m1.active_yn) ='Y'  AND a.menu_id = m.menu_id  "
167                                 + "AND a.ancestor_menu_id = m1.menu_id  UNION  select m1.menu_id, m1.column_num, m1.text, m1.parent_menu_id, m1.url, m1.active_yn  "
168                                 + "FROM fn_menu_functional m, fn_menu_functional_roles mr, fn_menu_functional m1,  fn_menu_functional_ancestors a  where a.menu_id = m.menu_id  AND a.ancestor_menu_id = m1.menu_id  AND m.menu_id != m1.menu_id  AND m.menu_id = mr.menu_id  AND mr.role_id = '900'  AND UPPER(m.active_yn) = 'Y' AND UPPER(m1.active_yn) ='Y'  UNION  SELECT m.menu_id, m.column_num, m.text, m.parent_menu_id, m.url, m.active_yn  FROM fn_menu_functional m  WHERE m.text in ('Favorites','Get Access','Contact Us','Support','User Guide','Help')";
169                 List<FunctionalMenuItem> actualResult = new ArrayList<FunctionalMenuItem>();
170                 List<FunctionalMenuItem> expectedResult = new ArrayList<FunctionalMenuItem>();
171                  
172                 Mockito.when(dataAccessService.executeSQLQuery(sql, FunctionalMenuItemWithAppID.class, null)).thenReturn(expectedResult);
173                  
174                 actualResult = functionalMenuServiceImpl.getFunctionalMenuItemsForUser(orgUserId);
175                 assertEquals(actualResult, expectedResult);             
176         }
177         
178         @Test
179         public void getFunctionalMenuItemDetailsTest(){
180                 Integer menuid = 1;
181                 String sql = "SELECT * FROM fn_menu_functional_roles WHERE menu_id = '1'";
182                 FunctionalMenuItem actualResult = null;
183                 FunctionalMenuItem expectedResult = null;
184                 List<FunctionalMenuRole> roleItems = new ArrayList<FunctionalMenuRole>();
185                 Mockito.when(dataAccessService.executeSQLQuery(sql, FunctionalMenuItemWithAppID.class, null)).thenReturn(roleItems);
186                  
187                 actualResult = functionalMenuServiceImpl.getFunctionalMenuItemDetails(menuid);
188                 assertEquals(actualResult, expectedResult);             
189         }
190                 
191         @Test
192         public void getFavoriteItemsTest(){
193                 Long userId = (long)1;
194                 String sql = "SELECT DISTINCT f.user_id,f.menu_id,m.text,m.url  "
195                                 + "FROM fn_menu_favorites f, fn_menu_functional m, fn_menu_functional_roles mr  "
196                                 + "WHERE f.user_id='1' AND f.menu_id = m.menu_id  AND f.menu_id = mr.menu_id  AND mr.role_id != '900' ";
197                 List<FavoritesFunctionalMenuItemJson> actualResult = new ArrayList<FavoritesFunctionalMenuItemJson>();
198                 List<FavoritesFunctionalMenuItemJson> expectedResult = new ArrayList<FavoritesFunctionalMenuItemJson>();
199                  
200                 Mockito.when(dataAccessService.executeSQLQuery(sql, FavoritesFunctionalMenuItemJson.class, null)).thenReturn(expectedResult);
201                  
202                 actualResult = functionalMenuServiceImpl.getFavoriteItems(userId);
203                 assertEquals(actualResult, expectedResult);             
204         }       
205 }