/*! ******************************************************************************
*
* Pentaho Data Integration
*
* Copyright (C) 2002-2016 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.trans.steps.pentahoreporting;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.RowMetaAndData;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.row.RowMeta;
import org.pentaho.di.core.row.RowMetaInterface;
import org.pentaho.di.core.row.value.ValueMetaString;
import org.pentaho.di.core.variables.Variables;
import org.pentaho.di.trans.TransMeta;
import org.pentaho.di.trans.TransTestFactory;
import org.pentaho.di.trans.steps.pentahoreporting.PentahoReportingOutputMeta.ProcessorType;
import org.pentaho.reporting.engine.classic.core.ClassicEngineBoot;
public class PDI7502IT {
private static File reportFile;
private static String INPUT_FIELD_NAME = "PRPT_Report_File";
private static String OUTPUT_FIELD_NAME = "Generated Report File";
private static String REPORTING_STEP_NAME = "PRPT Output Step";
private File outputFile;
private List<RowMetaAndData> inputRows;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
ClassicEngineBoot.getInstance().start();
KettleEnvironment.init( false );
reportFile = new File( "testfiles/org/pentaho/di/trans/steps/pentahoreporting/pdi-7502.prpt" );
assertTrue( reportFile.exists() );
}
@Before
public void setUp() throws Exception {
outputFile = File.createTempFile( this.getClass().getName(), ".out" );
outputFile.deleteOnExit();
outputFile.delete();
inputRows = generateInputData( reportFile, outputFile );
}
@Test
public void testFailPDF() {
TransMeta tm = generateSampleTrans( ProcessorType.PDF );
try {
TransTestFactory.executeTestTransformation( tm, REPORTING_STEP_NAME, inputRows );
fail();
} catch ( KettleException e ) {
// Success, the transformation failed to render the report
}
assertFalse( outputFile.exists() );
}
@Test
public void testFailCSV() {
TransMeta tm = generateSampleTrans( ProcessorType.CSV );
try {
TransTestFactory.executeTestTransformation( tm, REPORTING_STEP_NAME, inputRows );
fail();
} catch ( KettleException e ) {
// Success, the transformation failed to render the report
}
assertFalse( outputFile.exists() );
}
@Test
public void testFailExcel() {
TransMeta tm = generateSampleTrans( ProcessorType.Excel );
try {
TransTestFactory.executeTestTransformation( tm, REPORTING_STEP_NAME, inputRows );
fail();
} catch ( KettleException e ) {
// Success, the transformation failed to render the report
}
assertFalse( outputFile.exists() );
}
@Test
public void testFailExcel2007() {
TransMeta tm = generateSampleTrans( ProcessorType.Excel_2007 );
try {
TransTestFactory.executeTestTransformation( tm, REPORTING_STEP_NAME, inputRows );
fail();
} catch ( KettleException e ) {
// Success, the transformation failed to render the report
}
assertFalse( outputFile.exists() );
}
@Test
public void testFailStreamingHtml() {
TransMeta tm = generateSampleTrans( ProcessorType.StreamingHTML );
try {
TransTestFactory.executeTestTransformation( tm, REPORTING_STEP_NAME, inputRows );
fail();
} catch ( KettleException e ) {
// Success, the transformation failed to render the report
}
assertFalse( outputFile.exists() );
}
@Test
public void testFailPagedHtml() {
TransMeta tm = generateSampleTrans( ProcessorType.PagedHTML );
try {
TransTestFactory.executeTestTransformation( tm, REPORTING_STEP_NAME, inputRows );
fail();
} catch ( KettleException e ) {
// Success, the transformation failed to render the report
}
assertFalse( outputFile.exists() );
}
@Test
public void testFailRTF() {
TransMeta tm = generateSampleTrans( ProcessorType.RTF );
try {
TransTestFactory.executeTestTransformation( tm, REPORTING_STEP_NAME, inputRows );
fail();
} catch ( KettleException e ) {
// Success, the transformation failed to render the report
}
assertFalse( outputFile.exists() );
}
private TransMeta generateSampleTrans( ProcessorType type ) {
PentahoReportingOutputMeta proMeta = new PentahoReportingOutputMeta();
proMeta.setInputFileField( INPUT_FIELD_NAME );
proMeta.setOutputFileField( OUTPUT_FIELD_NAME );
proMeta.setOutputProcessorType( type );
return TransTestFactory.generateTestTransformation( new Variables(), proMeta, REPORTING_STEP_NAME );
}
private List<RowMetaAndData> generateInputData( File reportFile, File outputFile ) {
RowMetaInterface rm = new RowMeta();
rm.addValueMeta( new ValueMetaString( INPUT_FIELD_NAME ) );
rm.addValueMeta( new ValueMetaString( OUTPUT_FIELD_NAME ) );
RowMetaAndData rmd = new RowMetaAndData( rm, reportFile.getPath(), outputFile.getPath() );
List<RowMetaAndData> result = new ArrayList<>();
result.add( rmd );
return result;
}
}