/*! * Copyright 2010 - 2017 Pentaho Corporation. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.pentaho.di.ui.repository.pur.repositoryexplorer.controller; import org.junit.Assert; import org.junit.Test; import org.mockito.Mockito; import org.pentaho.di.repository.ObjectId; import org.pentaho.di.repository.Repository; import org.pentaho.di.repository.pur.PurRepositoryMeta; import org.pentaho.di.ui.repository.pur.repositoryexplorer.model.UIEETransformation; import org.pentaho.di.ui.repository.pur.services.ILockService; import org.pentaho.di.ui.repository.repositoryexplorer.model.UIRepositoryObject; import org.pentaho.ui.xul.components.XulMenuitem; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; public class RepositoryLockControllerTest { @Test public void testBlockLock() throws Exception { RepositoryLockController repositoryLockController = new RepositoryLockController(); List<UIRepositoryObject> selectedRepoObjects = new ArrayList<>(); UIEETransformation lockObject = Mockito.mock( UIEETransformation.class ); selectedRepoObjects.add( lockObject ); Mockito.when( lockObject.isLocked() ).thenReturn( true ); ObjectId objectId = Mockito.mock( ObjectId.class ); Mockito.when( lockObject.getObjectId() ).thenReturn( objectId ); XulMenuitem lockFileMenuItem = Mockito.mock( XulMenuitem.class ); Field lockFileMenuItemField = repositoryLockController.getClass().getDeclaredField( "lockFileMenuItem" ); lockFileMenuItemField.setAccessible( true ); lockFileMenuItemField.set( repositoryLockController, lockFileMenuItem ); XulMenuitem deleteFileMenuItem = Mockito.mock( XulMenuitem.class ); Field deleteFileMenuItemField = repositoryLockController.getClass().getDeclaredField( "deleteFileMenuItem" ); deleteFileMenuItemField.setAccessible( true ); deleteFileMenuItemField.set( repositoryLockController, deleteFileMenuItem ); XulMenuitem renameFileMenuItem = Mockito.mock( XulMenuitem.class ); Field renameFileMenuItemField = repositoryLockController.getClass().getDeclaredField( "renameFileMenuItem" ); renameFileMenuItemField.setAccessible( true ); renameFileMenuItemField.set( repositoryLockController, renameFileMenuItem ); Repository repository = Mockito.mock( Repository.class ); PurRepositoryMeta repositoryMeta = Mockito.mock( PurRepositoryMeta.class ); Mockito.when( repository.getRepositoryMeta() ).thenReturn( repositoryMeta ); Field repositoryField = repositoryLockController.getClass().getDeclaredField( "repository" ); repositoryField.setAccessible( true ); repositoryField.set( repositoryLockController, repository ); ILockService service = Mockito.mock( ILockService.class ); Mockito.when( service.canUnlockFileById( objectId ) ).thenReturn( true ); Field serviceField = repositoryLockController.getClass().getDeclaredField( "service" ); serviceField.setAccessible( true ); serviceField.set( repositoryLockController, service ); repositoryLockController.setMenuItemEnabledState( selectedRepoObjects ); Assert.assertFalse( lockFileMenuItem.isDisabled() ); Mockito.verify( lockFileMenuItem ).setDisabled( false ); } }