package de.superx.servlet; import java.io.File; import java.io.IOException; import java.util.Iterator; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import org.springframework.test.context.ContextConfiguration; import de.superx.BaseDbTest; import de.superx.TestApplicationConfigPg; import de.superx.bin.ExecuteMask; import de.superx.sec.InputCheckRegistry; //@ContextConfiguration(classes = { TestApplicationConfigPg.class }) public class JasperCreatorTest extends BaseDbTest { private static String outputFilename; private static File outputFile; private static final String STUDENTS_FACTSHEET_NAME = "Studierende Datenblatt"; @BeforeClass public static void setup() throws IOException { outputFilename=String.join(File.separator, "test", "output_160440.xlsx"); InputCheckRegistry.registerDefaultChecks(); if (outputFilename != null) { outputFile = new File(outputFilename); if (outputFile.exists()) { outputFile.delete(); } } } @Test public void testXslxDatenblatt() throws Exception { String[] params = buildParams(); ExecuteMask.setMyWEBINFFilePath(SuperXManager.getWEB_INFPfad()); ExecuteMask.execute(params); validateXSLXFile(); } private static String[] buildParams() { String contenttype = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; String stylesheet = "tabelle_160440_semester_geschlecht.jrxml"; String[] params = { "-tid:160440", "-out:" + outputFilename, "-user:admin", "-params:Köpfe oder Fälle ?=KoF_2&Stichtag=1" + "&stylesheet=" + stylesheet + "&tablestylesheet=" + stylesheet + "&contenttype=" + contenttype, "-logger:" + logConfigPath, "-mandantenID:" + MANDANTEN_ID }; return params; } private static void validateXSLXFile() throws IOException, InvalidFormatException { Assert.assertTrue("'" + outputFilename + " ("+outputFile.getCanonicalPath()+") does not exist", outputFile.exists()); boolean studendsFactSheetFound = containsStudentsFactSheet(outputFile); Assert.assertTrue("'" + outputFilename + "' misses sheet '" + STUDENTS_FACTSHEET_NAME + "'", studendsFactSheetFound); } private static boolean containsStudentsFactSheet(File xslxFile) throws IOException, InvalidFormatException { boolean studendsFactSheetFound = false; try (XSSFWorkbook workbook = new XSSFWorkbook(xslxFile);) { Iterator shit = workbook.sheetIterator(); while (shit.hasNext()) { Sheet sheet = shit.next(); String sheetName = sheet.getSheetName(); studendsFactSheetFound |= sheetName.equals(STUDENTS_FACTSHEET_NAME); } } return studendsFactSheetFound; } }