2  * ============LICENSE_START==========================================
 
   4  * ===================================================================
 
   5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
 
   6  * ===================================================================
 
   8  * Unless otherwise specified, all software contained herein is licensed
 
   9  * under the Apache License, Version 2.0 (the "License");
 
  10  * you may not use this software except in compliance with the License.
 
  11  * You may obtain a copy of the License at
 
  13  *             http://www.apache.org/licenses/LICENSE-2.0
 
  15  * Unless required by applicable law or agreed to in writing, software
 
  16  * distributed under the License is distributed on an "AS IS" BASIS,
 
  17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  18  * See the License for the specific language governing permissions and
 
  19  * limitations under the License.
 
  21  * Unless otherwise specified, all documentation contained herein is licensed
 
  22  * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
 
  23  * you may not use this documentation except in compliance with the License.
 
  24  * You may obtain a copy of the License at
 
  26  *             https://creativecommons.org/licenses/by/4.0/
 
  28  * Unless required by applicable law or agreed to in writing, documentation
 
  29  * distributed under the License is distributed on an "AS IS" BASIS,
 
  30  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  31  * See the License for the specific language governing permissions and
 
  32  * limitations under the License.
 
  34  * ============LICENSE_END============================================
 
  38 package org.onap.portalapp.portal.service;
 
  40 import static org.junit.Assert.assertEquals;
 
  42 import java.util.ArrayList;
 
  43 import java.util.List;
 
  45 import org.junit.Before;
 
  46 import org.junit.Test;
 
  47 import org.junit.runner.RunWith;
 
  48 import org.mockito.InjectMocks;
 
  49 import org.mockito.Mock;
 
  50 import org.mockito.Mockito;
 
  51 import org.mockito.MockitoAnnotations;
 
  52 import org.onap.portalapp.portal.domain.FunctionalMenuItemWithAppID;
 
  53 import org.onap.portalapp.portal.service.FunctionalMenuService;
 
  54 import org.onap.portalapp.portal.service.FunctionalMenuServiceImpl;
 
  55 import org.onap.portalapp.portal.transport.FavoritesFunctionalMenuItemJson;
 
  56 import org.onap.portalapp.portal.transport.FunctionalMenuItem;
 
  57 import org.onap.portalapp.portal.transport.FunctionalMenuRole;
 
  58 import org.onap.portalapp.portal.utils.EPCommonSystemProperties;
 
  59 import org.onap.portalsdk.core.service.DataAccessService;
 
  60 import org.onap.portalsdk.core.util.SystemProperties;
 
  61 import org.powermock.api.mockito.PowerMockito;
 
  62 import org.powermock.core.classloader.annotations.PrepareForTest;
 
  63 import org.powermock.modules.junit4.PowerMockRunner;
 
  65 @RunWith(PowerMockRunner.class)
 
  66 @PrepareForTest({SystemProperties.class, EPCommonSystemProperties.class})
 
  67 public class FunctionalMenuMockServiceImplTest {
 
  70         FunctionalMenuService functionalMenuService;
 
  73         DataAccessService dataAccessService;
 
  77                 MockitoAnnotations.initMocks(this);
 
  81         FunctionalMenuServiceImpl functionalMenuServiceImpl= new FunctionalMenuServiceImpl();
 
  84         public void assignHelpURLsTest(){
 
  85                 List<FunctionalMenuItem> menuItems = new ArrayList<FunctionalMenuItem>();
 
  86                 FunctionalMenuItem functionalMenuItem1 = new FunctionalMenuItem();
 
  87                 functionalMenuItem1.text = "Contact Us";
 
  88                 FunctionalMenuItem functionalMenuItem2 = new FunctionalMenuItem();
 
  89                 functionalMenuItem2.text = "Get Access";
 
  90                 FunctionalMenuItem functionalMenuItem3 = new FunctionalMenuItem();
 
  91                 functionalMenuItem3.text = "User Guide";                
 
  92                 menuItems.add(functionalMenuItem1);
 
  93                 menuItems.add(functionalMenuItem2);
 
  94                 menuItems.add(functionalMenuItem3);
 
  96                 PowerMockito.mockStatic(SystemProperties.class);
 
  97                 Mockito.when(SystemProperties.getProperty(EPCommonSystemProperties.USER_GUIDE_URL)).thenReturn("http://todo_enter_user_guide_link");
 
  98 //              Mockito.doNothing().when(functionalMenuServiceImpl).assignHelpURLs(menuItems);
 
  99                 functionalMenuServiceImpl.assignHelpURLs(menuItems);
 
 103         public void getFunctionalMenuItemsTest(){
 
 104                 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, "
 
 105                                 + "fn_menu_functional_roles r WHERE m.menu_id = r.menu_id  AND UPPER(m.active_yn) = 'Y'  AND r.role_id != '900'  "
 
 106                                 + "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  "
 
 107                                 + "WHERE m.url=''  AND UPPER(m.active_yn) = 'Y'";
 
 108                  List<FunctionalMenuItem> actualResult = new ArrayList<FunctionalMenuItem>();
 
 109                  List<FunctionalMenuItem> expectedResult = new ArrayList<FunctionalMenuItem>();
 
 111                  Mockito.when(dataAccessService.executeSQLQuery(sql, FunctionalMenuItemWithAppID.class, null)).thenReturn(expectedResult);
 
 113                  actualResult = functionalMenuServiceImpl.getFunctionalMenuItems(true);
 
 114                  assertEquals(actualResult, expectedResult);
 
 118         public void getFunctionalMenuItemsNegativeTest(){
 
 119                 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, "
 
 120                                 + "fn_menu_functional_roles r WHERE m.menu_id = r.menu_id  AND UPPER(m.active_yn) = 'Y'  AND r.role_id != '900'  "
 
 121                                 + "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  "
 
 122                                 + "WHERE m.url=''  AND UPPER(m.active_yn) = 'Y'";
 
 123                  List<FunctionalMenuItem> actualResult = new ArrayList<FunctionalMenuItem>();
 
 124                  List<FunctionalMenuItem> expectedResult = new ArrayList<FunctionalMenuItem>();
 
 126                  Mockito.when(dataAccessService.executeSQLQuery(sql, FunctionalMenuItemWithAppID.class, null)).thenReturn(expectedResult);
 
 128                  actualResult = functionalMenuServiceImpl.getFunctionalMenuItems(false);
 
 129                  assertEquals(actualResult, expectedResult);
 
 133         public void getFunctionalMenuItemsForNotificationTreeTest(){
 
 134                 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 "
 
 135                                 + "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,"
 
 136                                 + " m.url, m.active_yn,-1 app_id  FROM fn_menu_functional m  WHERE m.url=''  AND UPPER(m.active_yn) = 'Y'";
 
 137                  List<FunctionalMenuItem> actualResult = new ArrayList<FunctionalMenuItem>();
 
 138                  List<FunctionalMenuItem> expectedResult = new ArrayList<FunctionalMenuItem>();
 
 140                  Mockito.when(dataAccessService.executeSQLQuery(sql, FunctionalMenuItemWithAppID.class, null)).thenReturn(expectedResult);
 
 142                  actualResult = functionalMenuServiceImpl.getFunctionalMenuItemsForNotificationTree(true);
 
 143                  assertEquals(actualResult, expectedResult);
 
 148         public void getFunctionalMenuItemsForNotificationNegativeTreeTest(){
 
 149                 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 "
 
 150                                 + "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,"
 
 151                                 + " m.url, m.active_yn,-1 app_id  FROM fn_menu_functional m  WHERE m.url=''  AND UPPER(m.active_yn) = 'Y'";
 
 152                  List<FunctionalMenuItem> actualResult = new ArrayList<FunctionalMenuItem>();
 
 153                  List<FunctionalMenuItem> expectedResult = new ArrayList<FunctionalMenuItem>();
 
 155                  Mockito.when(dataAccessService.executeSQLQuery(sql, FunctionalMenuItemWithAppID.class, null)).thenReturn(expectedResult);
 
 157                  actualResult = functionalMenuServiceImpl.getFunctionalMenuItemsForNotificationTree(false);
 
 158                  assertEquals(actualResult, expectedResult);            
 
 162         public void getFunctionalMenuItemsForAppTest(){
 
 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  "
 
 165                                 + "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  "
 
 166                                 + "AND a.ancestor_menu_id = m1.menu_id";
 
 168                 List<FunctionalMenuItem> actualResult = new ArrayList<FunctionalMenuItem>();
 
 169                 List<FunctionalMenuItem> expectedResult = new ArrayList<FunctionalMenuItem>();
 
 171                  Mockito.when(dataAccessService.executeSQLQuery(sql, FunctionalMenuItemWithAppID.class, null)).thenReturn(expectedResult);
 
 173                  actualResult = functionalMenuServiceImpl.getFunctionalMenuItemsForApp(appId);
 
 174                  assertEquals(actualResult, expectedResult);
 
 178         public void getFunctionalMenuItemsForUserTest(){
 
 179                 String orgUserId = "test";
 
 180                 String sql = "SELECT DISTINCT m1.menu_id, m1.column_num, m1.text, m1.parent_menu_id, m1.url, m.active_yn  "
 
 181                                 + "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  "
 
 182                                 + "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')  "
 
 183                                 + "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  "
 
 184                                 + "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  "
 
 185                                 + "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')";
 
 186                 List<FunctionalMenuItem> actualResult = new ArrayList<FunctionalMenuItem>();
 
 187                 List<FunctionalMenuItem> expectedResult = new ArrayList<FunctionalMenuItem>();
 
 189                 Mockito.when(dataAccessService.executeSQLQuery(sql, FunctionalMenuItemWithAppID.class, null)).thenReturn(expectedResult);
 
 191                 actualResult = functionalMenuServiceImpl.getFunctionalMenuItemsForUser(orgUserId);
 
 192                 assertEquals(actualResult, expectedResult);             
 
 196         public void getFunctionalMenuItemDetailsTest(){
 
 198                 String sql = "SELECT * FROM fn_menu_functional_roles WHERE menu_id = '1'";
 
 199                 FunctionalMenuItem actualResult = null;
 
 200                 FunctionalMenuItem expectedResult = null;
 
 201                 List<FunctionalMenuRole> roleItems = new ArrayList<FunctionalMenuRole>();
 
 202                 Mockito.when(dataAccessService.executeSQLQuery(sql, FunctionalMenuItemWithAppID.class, null)).thenReturn(roleItems);
 
 204                 actualResult = functionalMenuServiceImpl.getFunctionalMenuItemDetails(menuid);
 
 205                 assertEquals(actualResult, expectedResult);             
 
 209         public void getFavoriteItemsTest(){
 
 210                 Long userId = (long)1;
 
 211                 String sql = "SELECT DISTINCT f.user_id,f.menu_id,m.text,m.url  "
 
 212                                 + "FROM fn_menu_favorites f, fn_menu_functional m, fn_menu_functional_roles mr  "
 
 213                                 + "WHERE f.user_id='1' AND f.menu_id = m.menu_id  AND f.menu_id = mr.menu_id  AND mr.role_id != '900' ";
 
 214                 List<FavoritesFunctionalMenuItemJson> actualResult = new ArrayList<FavoritesFunctionalMenuItemJson>();
 
 215                 List<FavoritesFunctionalMenuItemJson> expectedResult = new ArrayList<FavoritesFunctionalMenuItemJson>();
 
 217                 Mockito.when(dataAccessService.executeSQLQuery(sql, FavoritesFunctionalMenuItemJson.class, null)).thenReturn(expectedResult);
 
 219                 actualResult = functionalMenuServiceImpl.getFavoriteItems(userId);
 
 220                 assertEquals(actualResult, expectedResult);