package io.konik;
import static org.assertj.core.api.Assertions.assertThat;
import io.konik.harness.FileExtractor;
import io.konik.utils.RandomInvoiceGenerator;
import io.konik.zugferd.Invoice;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ServiceLoader;
import org.apache.pdfbox.io.IOUtils;
import org.junit.Before;
import org.junit.Test;
@SuppressWarnings("javadoc")
public class PdfHandlerTest {
PdfHandler pdfHandler;
FileExtractor fileExtractor;
@Before
public void setUp() throws Exception {
pdfHandler = new PdfHandler();
this.fileExtractor = ServiceLoader.load(FileExtractor.class).iterator().next();
}
@Test
public void extractInvoice() throws Exception {
InputStream is = getClass().getResourceAsStream("/Musterrechnung_Einfach_Basic.pdf");
Invoice invoice = pdfHandler.extractInvoice(is);
assertThat(invoice).isNotNull();
assertThat(invoice.getHeader().getInvoiceNumber()).isEqualTo("471102");
}
@Test
public void extractInvoice_lowLevel() throws Exception {
InputStream is = getClass().getResourceAsStream("/Musterrechnung_Einfach_Basic.pdf");
InputStream stream = fileExtractor.extractToStream(is);
assertThat(stream).isNotNull();
String invoice = new String(IOUtils.toByteArray(stream),"UTF-8");
assertThat(invoice).contains("471102");
stream.close();
}
@Test
public void appendInvoice() throws Exception {
Invoice invoice = new RandomInvoiceGenerator().generate(Invoice.class);
InputStream inputPdf = getClass().getResourceAsStream("/Musterrechnung_Einfach_Basic.pdf");
OutputStream resultingPdf = new FileOutputStream("target/appendInvoiceTestResult.pdf");
pdfHandler.appendInvoice(invoice, inputPdf, resultingPdf);
}
}