/*! ******************************************************************************
*
* Pentaho Data Integration
*
* Copyright (C) 2017 by Pentaho : http://www.pentaho.com
*
*******************************************************************************
*
* 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.spoon.trans;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.verify;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doCallRealMethod;
import java.util.Arrays;
import java.util.List;
import junit.framework.Assert;
import org.eclipse.swt.events.MouseEvent;
import org.junit.Test;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.gui.Point;
import org.pentaho.di.trans.TransHopMeta;
import org.pentaho.di.trans.TransMeta;
import org.pentaho.di.trans.step.StepErrorMeta;
import org.pentaho.di.trans.step.StepMeta;
import org.pentaho.di.ui.spoon.Spoon;
import org.pentaho.ui.xul.components.XulMenuitem;
import org.pentaho.ui.xul.containers.XulMenu;
import org.pentaho.ui.xul.dom.Document;
public class TransGraphTest {
private static final boolean TRUE_RESULT = true;
@Test
public void testMouseUpHopGetsSelected() {
MouseEvent event = mock( MouseEvent.class );
int x = 0, y = 0;
TransGraph transGraph = mock( TransGraph.class );
StepMeta stepMeta = mock( StepMeta.class );
StepErrorMeta errorMeta = new StepErrorMeta( null, null );
TransHopMeta selectedHop = new TransHopMeta();
selectedHop.setErrorHop( true );
selectedHop.setEnabled( TRUE_RESULT );
selectedHop.setFromStep( stepMeta );
when( stepMeta.getStepErrorMeta() ).thenReturn( errorMeta );
when( transGraph.findHop( x, y ) ).thenReturn( selectedHop );
when( transGraph.screen2real( any( Integer.class ), any( Integer.class ) ) ).thenReturn( new Point( x, y ) );
doCallRealMethod().when( transGraph ).mouseUp( event );
transGraph.mouseUp( event );
Assert.assertTrue( errorMeta.isEnabled() );
}
@Test
public void testEnableHopGetsSelected() {
TransGraph transGraph = mock( TransGraph.class );
doCallRealMethod().when( transGraph ).setTransMeta( any( TransMeta.class ) );
doCallRealMethod().when( transGraph ).setSpoon( any( Spoon.class ) );
transGraph.setTransMeta( new TransMeta() );
transGraph.setSpoon( mock( Spoon.class ) );
StepMeta stepMeta = mock( StepMeta.class );
StepErrorMeta errorMeta = new StepErrorMeta( null, null );
TransHopMeta selectedHop = new TransHopMeta();
selectedHop.setErrorHop( true );
selectedHop.setEnabled( false );
selectedHop.setFromStep( stepMeta );
when( stepMeta.getStepErrorMeta() ).thenReturn( errorMeta );
selectedHop.setToStep( new StepMeta() );
when( transGraph.getCurrentHop() ).thenReturn( selectedHop );
doCallRealMethod().when( transGraph ).enableHop();
transGraph.enableHop();
Assert.assertTrue( errorMeta.isEnabled() );
}
@SuppressWarnings( "unchecked" )
@Test
public void testInitializeXulMenu() throws KettleException {
StepMeta stepMeta = mock( StepMeta.class );
TransGraph transGraph = mock( TransGraph.class );
TransMeta transMeta = mock( TransMeta.class );
Document document = mock( Document.class );
XulMenuitem xulItem = mock( XulMenuitem.class );
XulMenu xulMenu = mock( XulMenu.class );
StepErrorMeta stepErrorMeta = mock( StepErrorMeta.class );
Spoon spoon = mock( Spoon.class );
List<StepMeta> selection = Arrays.asList( new StepMeta(), stepMeta, new StepMeta() );
doCallRealMethod().when( transGraph ).setTransMeta( any( TransMeta.class ) );
doCallRealMethod().when( transGraph ).setSpoon( any( Spoon.class ) );
transGraph.setTransMeta( transMeta );
transGraph.setSpoon( spoon );
when( stepMeta.getStepErrorMeta() ).thenReturn( stepErrorMeta );
when( stepMeta.isDrawn() ).thenReturn( true );
when( document.getElementById( any( String.class ) ) ).thenReturn( xulItem );
when( document.getElementById( TransGraph.TRANS_GRAPH_ENTRY_AGAIN ) ).thenReturn( xulMenu );
when( document.getElementById( TransGraph.TRANS_GRAPH_ENTRY_SNIFF ) ).thenReturn( xulMenu );
doCallRealMethod().when( transGraph ).initializeXulMenu( any( Document.class ),
any( List.class ), any( StepMeta.class ) );
transGraph.initializeXulMenu( document, selection, stepMeta );
verify( transMeta ).isAnySelectedStepUsedInTransHops();
}
}