/*! ****************************************************************************** * * Pentaho Data Integration * * Copyright (C) 2002-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.trans.steps.excelinput; import org.junit.Assert; import org.junit.Test; import org.mockito.Mockito; import org.pentaho.di.core.plugins.PluginInterface; import org.pentaho.di.core.plugins.PluginRegistry; import org.pentaho.di.core.row.RowMeta; import org.pentaho.di.core.row.RowMetaInterface; import org.pentaho.di.core.row.ValueMetaInterface; import org.pentaho.di.core.row.value.ValueMetaFactory; import org.pentaho.di.core.row.value.ValueMetaPluginType; import org.pentaho.di.core.spreadsheet.KCell; import org.pentaho.di.core.spreadsheet.KCellType; import org.pentaho.di.core.spreadsheet.KSheet; import org.pentaho.di.core.spreadsheet.KWorkbook; import org.pentaho.di.trans.steps.excelinput.ExcelInputMeta; import java.lang.reflect.Method; public class ExcelInputDialogTest { @Test /** * http://jira.pentaho.com/browse/PDI-13930 */ public void getFieldsTest() throws Exception { ExcelInputDialog dialog = Mockito.mock( ExcelInputDialog.class ); RowMeta fields = new RowMeta(); ExcelInputMeta info = Mockito.mock( ExcelInputMeta.class ); Mockito.doReturn( true ).when( info ).readAllSheets(); int[] startColumn = {0}; Mockito.doReturn( startColumn ).when( info ).getStartColumn(); int[] startRow = {0}; Mockito.doReturn( startRow ).when( info ).getStartRow(); KWorkbook workbook = Mockito.mock( KWorkbook.class ); Mockito.doReturn( 1 ).when( workbook ).getNumberOfSheets(); KSheet sheet = Mockito.mock( KSheet.class ); Mockito.doReturn( sheet ).when( workbook ).getSheet( 0 ); KCell cell = Mockito.mock( KCell.class ); int fieldCount = 400; for ( int i = 0; i <= fieldCount - 1; i++ ) { Mockito.doReturn( cell ).when( sheet ).getCell( i, 0 ); Mockito.doReturn( cell ).when( sheet ).getCell( i, 1 ); } Mockito.doReturn( "testValue" ).when( cell ).getContents(); Mockito.doReturn( KCellType.NUMBER ).when( cell ).getType(); PluginRegistry pluginRegistry = Mockito.mock( PluginRegistry.class ); PluginInterface stringPlugin = Mockito.mock( PluginInterface.class ); Mockito.doReturn( stringPlugin ).when( pluginRegistry ).getPlugin( ValueMetaPluginType.class, "1" ); Mockito.doReturn( Mockito.mock( ValueMetaInterface.class ) ).when( pluginRegistry ). loadClass( stringPlugin, ValueMetaInterface.class ); ValueMetaFactory.pluginRegistry = pluginRegistry; Method processingWorkbookMethod = ExcelInputDialog.class.getDeclaredMethod( "processingWorkbook", RowMetaInterface.class, ExcelInputMeta.class, KWorkbook.class ); processingWorkbookMethod.setAccessible( true ); processingWorkbookMethod.invoke( dialog, fields, info, workbook ); Assert.assertEquals( fieldCount, fields.size() ); } }