new sample file

This commit is contained in:
Jochen Stärk
2017-11-18 11:33:46 +01:00
parent 927c62bfc9
commit 5a6a65a3c9
2 changed files with 416 additions and 465 deletions

View File

@@ -8,10 +8,6 @@ import java.text.SimpleDateFormat;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.GregorianCalendar; import java.util.GregorianCalendar;
import java.util.logging.LogManager;
import java.util.logging.Logger;
import javax.xml.transform.TransformerException;
import org.junit.FixMethodOrder; import org.junit.FixMethodOrder;
import org.junit.runners.MethodSorters; import org.junit.runners.MethodSorters;
@@ -21,116 +17,98 @@ import junit.framework.TestCase;
import junit.framework.TestSuite; import junit.framework.TestSuite;
@FixMethodOrder(MethodSorters.NAME_ASCENDING) @FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExportableTransaction public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExportableTransaction {
{
@Override @Override
public Date getDeliveryDate() public Date getDeliveryDate() {
{ return new GregorianCalendar(2017, Calendar.NOVEMBER, 17).getTime();
return new GregorianCalendar(2017, Calendar.MAY, 7).getTime();
} }
@Override @Override
public Date getDueDate() public Date getDueDate() {
{ return new GregorianCalendar(2017, Calendar.DECEMBER, 9).getTime();
return new GregorianCalendar(2017, Calendar.MAY, 30).getTime();
} }
@Override @Override
public Date getIssueDate() public Date getIssueDate() {
{ return new GregorianCalendar(2017, Calendar.NOVEMBER, 18).getTime();
return new GregorianCalendar(2017, Calendar.MAY, 9).getTime();
} }
@Override @Override
public String getNumber() public String getNumber() {
{ return "RE-20171118/506";
return "RE-20170509/505";
} }
@Override @Override
public String getOwnBIC() public String getOwnBIC() {
{
return "COBADEFFXXX"; return "COBADEFFXXX";
} }
@Override @Override
public String getOwnBankName() public String getOwnBankName() {
{
return "Commerzbank"; return "Commerzbank";
} }
@Override @Override
public String getOwnCountry() public String getOwnCountry() {
{
return "DE"; return "DE";
} }
@Override @Override
public String getOwnIBAN() public String getOwnIBAN() {
{
return "DE88 2008 0000 0970 3757 00"; return "DE88 2008 0000 0970 3757 00";
} }
@Override @Override
public String getOwnLocation() public String getOwnLocation() {
{
return "Stadthausen"; return "Stadthausen";
} }
@Override @Override
public String getOwnOrganisationName() public String getOwnOrganisationName() {
{
return "Bei Spiel GmbH"; return "Bei Spiel GmbH";
} }
@Override @Override
public String getOwnStreet() public String getOwnStreet() {
{
return "Ecke 12"; return "Ecke 12";
} }
@Override @Override
public String getOwnTaxID() public String getOwnTaxID() {
{
return "22/815/0815/4"; return "22/815/0815/4";
} }
@Override @Override
public String getOwnVATID() public String getOwnVATID() {
{
return "DE136695976"; return "DE136695976";
} }
@Override @Override
public String getOwnZIP() public String getOwnZIP() {
{
return "12345"; return "12345";
} }
@Override @Override
public IZUGFeRDExportableContact getRecipient() public IZUGFeRDExportableContact getRecipient() {
{
return new Contact(); return new Contact();
} }
@Override @Override
public String getOwnOrganisationFullPlaintextInfo() public String getOwnOrganisationFullPlaintextInfo() {
{
return null; return null;
} }
@Override @Override
public String getCurrency() public String getCurrency() {
{
return "EUR"; return "EUR";
} }
@Override @Override
public IZUGFeRDExportableItem[] getZFItems() public IZUGFeRDExportableItem[] getZFItems() {
{
Item[] allItems = new Item[3]; Item[] allItems = new Item[3];
Product designProduct = new Product("", "Künstlerische Gestaltung (Stunde): Einer Beispielrechnung", "HUR", new BigDecimal("7.000000")); Product designProduct = new Product("", "Künstlerische Gestaltung (Stunde): Einer Beispielrechnung", "HUR",
new BigDecimal("7.000000"));
Product balloonProduct = new Product("", "Luftballon: Bunt, ca. 500ml", "C62", new BigDecimal("19.000000")); Product balloonProduct = new Product("", "Luftballon: Bunt, ca. 500ml", "C62", new BigDecimal("19.000000"));
Product airProduct = new Product("", "Heiße Luft pro Liter", "LTR", new BigDecimal("19.000000")); Product airProduct = new Product("", "Heiße Luft pro Liter", "LTR", new BigDecimal("19.000000"));
@@ -154,19 +132,22 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta
@Override @Override
public IZUGFeRDAllowanceCharge[] getZFAllowances() { public IZUGFeRDAllowanceCharge[] getZFAllowances() {
return null; return null;
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. // throw new UnsupportedOperationException("Not supported yet."); //To change
// body of generated methods, choose Tools | Templates.
} }
@Override @Override
public IZUGFeRDAllowanceCharge[] getZFCharges() { public IZUGFeRDAllowanceCharge[] getZFCharges() {
return null; return null;
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. // throw new UnsupportedOperationException("Not supported yet."); //To change
// body of generated methods, choose Tools | Templates.
} }
@Override @Override
public IZUGFeRDAllowanceCharge[] getZFLogisticsServiceCharges() { public IZUGFeRDAllowanceCharge[] getZFLogisticsServiceCharges() {
return null; return null;
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. // throw new UnsupportedOperationException("Not supported yet."); //To change
// body of generated methods, choose Tools | Templates.
} }
@Override @Override
@@ -174,51 +155,42 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta
return null; return null;
} }
class Contact implements IZUGFeRDExportableContact class Contact implements IZUGFeRDExportableContact {
{
@Override @Override
public String getCountry() public String getCountry() {
{
return "DE"; return "DE";
} }
@Override @Override
public String getLocation() public String getLocation() {
{
return "Spielkreis"; return "Spielkreis";
} }
@Override @Override
public String getName() public String getName() {
{
return "Theodor Est"; return "Theodor Est";
} }
@Override @Override
public String getStreet() public String getStreet() {
{
return "Bahnstr. 42"; return "Bahnstr. 42";
} }
@Override @Override
public String getVATID() public String getVATID() {
{
return "DE999999999"; return "DE999999999";
} }
@Override @Override
public String getZIP() public String getZIP() {
{
return "88802"; return "88802";
} }
} }
class Item implements IZUGFeRDExportableItem class Item implements IZUGFeRDExportableItem {
{
public Item(BigDecimal price, BigDecimal quantity, Product product) public Item(BigDecimal price, BigDecimal quantity, Product product) {
{
super(); super();
this.price = price; this.price = price;
this.quantity = quantity; this.quantity = quantity;
@@ -229,35 +201,29 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta
private Product product; private Product product;
@Override @Override
public BigDecimal getPrice() public BigDecimal getPrice() {
{
return price; return price;
} }
public void setPrice(BigDecimal price) public void setPrice(BigDecimal price) {
{
this.price = price; this.price = price;
} }
@Override @Override
public BigDecimal getQuantity() public BigDecimal getQuantity() {
{
return quantity; return quantity;
} }
public void setQuantity(BigDecimal quantity) public void setQuantity(BigDecimal quantity) {
{
this.quantity = quantity; this.quantity = quantity;
} }
@Override @Override
public Product getProduct() public Product getProduct() {
{
return product; return product;
} }
public void setProduct(Product product) public void setProduct(Product product) {
{
this.product = product; this.product = product;
} }
@@ -273,13 +239,11 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta
} }
class Product implements IZUGFeRDExportableProduct class Product implements IZUGFeRDExportableProduct {
{
private String description, name, unit; private String description, name, unit;
private BigDecimal VATPercent; private BigDecimal VATPercent;
public Product(String description, String name, String unit, BigDecimal VATPercent) public Product(String description, String name, String unit, BigDecimal VATPercent) {
{
super(); super();
this.description = description; this.description = description;
this.name = name; this.name = name;
@@ -288,46 +252,38 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta
} }
@Override @Override
public String getDescription() public String getDescription() {
{
return description; return description;
} }
public void setDescription(String description) public void setDescription(String description) {
{
this.description = description; this.description = description;
} }
@Override @Override
public String getName() public String getName() {
{
return name; return name;
} }
public void setName(String name) public void setName(String name) {
{
this.name = name; this.name = name;
} }
@Override @Override
public String getUnit() public String getUnit() {
{
return unit; return unit;
} }
public void setUnit(String unit) public void setUnit(String unit) {
{
this.unit = unit; this.unit = unit;
} }
@Override @Override
public BigDecimal getVATPercent() public BigDecimal getVATPercent() {
{
return VATPercent; return VATPercent;
} }
public void setVATPercent(BigDecimal VATPercent) public void setVATPercent(BigDecimal VATPercent) {
{
this.VATPercent = VATPercent; this.VATPercent = VATPercent;
} }
@@ -339,33 +295,33 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta
* @param testName * @param testName
* name of the test case * name of the test case
*/ */
public MustangReaderWriterTest(String testName) public MustangReaderWriterTest(String testName) {
{
super(testName); super(testName);
} }
/** /**
* @return the suite of tests being tested * @return the suite of tests being tested
*/ */
public static Test suite() public static Test suite() {
{
return new TestSuite(MustangReaderWriterTest.class); return new TestSuite(MustangReaderWriterTest.class);
} }
// //////// TESTS ////////////////////////////////////////////////////////////////////////////////////////// // //////// TESTS
// //////////////////////////////////////////////////////////////////////////////////////////
/** /**
* The importer test imports from ./src/test/MustangGnuaccountingBeispielRE-20170509_505.pdf to check the values. * The importer test imports from
* --> as only Name Ascending is supported for Test Unit sequence, I renamed the this test-A-Export to run before * ./src/test/MustangGnuaccountingBeispielRE-20170509_505.pdf to check the
* testZExport * values. --> as only Name Ascending is supported for Test Unit sequence, I
* renamed the this test-A-Export to run before testZExport
* *
* @throws IOException * @throws IOException
*/ */
public void testAImport() throws IOException public void testAImport() throws IOException {
{
ZUGFeRDImporter zi = new ZUGFeRDImporter(); ZUGFeRDImporter zi = new ZUGFeRDImporter();
try (InputStream inputStream = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505.pdf")) { try (InputStream inputStream = this.getClass()
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505.pdf")) {
zi.extractLowLevel(inputStream); zi.extractLowLevel(inputStream);
} }
@@ -377,8 +333,7 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta
String holder = null; String holder = null;
String ref = null; String ref = null;
if (zi.canParse()) if (zi.canParse()) {
{
zi.parse(); zi.parse();
amount = zi.getAmount(); amount = zi.getAmount();
bic = zi.getBIC(); bic = zi.getBIC();
@@ -386,33 +341,33 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta
holder = zi.getHolder(); holder = zi.getHolder();
ref = zi.getForeignReference(); ref = zi.getForeignReference();
} }
// this resembles the data written in MustangReaderWriterCustomXMLTest
assertEquals(amount, "571.04"); assertEquals(amount, "571.04");
assertEquals(bic, getOwnBIC()); assertEquals(bic, "COBADEFFXXX");
assertEquals(iban, getOwnIBAN()); assertEquals(iban, "DE88 2008 0000 0970 3757 00");
assertEquals(holder, getOwnOrganisationName()); assertEquals(holder, "Bei Spiel GmbH");
assertEquals(ref, getNumber()); assertEquals(ref, "RE-20170509/505");
} }
/** /**
* The exporter test bases on @{code ./src/test/MustangGnuaccountingBeispielRE-20140703_502blanko.pdf}, adds metadata, * The exporter test bases on @{code
* writes * ./src/test/MustangGnuaccountingBeispielRE-20140703_502blanko.pdf}, adds
* to @{code ./target/testout-*} and then imports to check the values. * metadata, writes to @{code ./target/testout-*} and then imports to check the
* It would not make sense to have it run before the less complex importer test (which is probably redundant) * values. It would not make sense to have it run before the less complex
* --> as only Name Ascending is supported for Test Unit sequence, I renamed the Exporter Test test-Z-Export * importer test (which is probably redundant) --> as only Name Ascending is
* supported for Test Unit sequence, I renamed the Exporter Test test-Z-Export
*/ */
public void testZExport() throws Exception public void testZExport() throws Exception {
{
final String TARGET_PDF = "./target/testout-MustangGnuaccountingBeispielRE-20170509_505new.pdf"; final String TARGET_PDF = "./target/testout-MustangGnuaccountingBeispielRE-20171118_506new.pdf";
// the writing part // the writing part
try(InputStream SOURCE_PDF = try (InputStream SOURCE_PDF = this.getClass()
this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf"); .getResourceAsStream("/MustangGnuaccountingBeispielRE-20171118_506blanko.pdf");
ZUGFeRDExporter ze = new ZUGFeRDExporterFromA1Factory() ZUGFeRDExporter ze = new ZUGFeRDExporterFromA1Factory().load(SOURCE_PDF)) {
.load(SOURCE_PDF)) { ze.setZUGFeRDVersion(2);
ze.PDFattachZugferdFile(this); ze.PDFattachZugferdFile(this);
ze.export(TARGET_PDF); ze.export(TARGET_PDF);
@@ -434,8 +389,7 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta
String iban = null; String iban = null;
String holder = null; String holder = null;
String ref = null; String ref = null;
if (zi.canParse()) if (zi.canParse()) {
{
zi.parse(); zi.parse();
amount = zi.getAmount(); amount = zi.getAmount();
bic = zi.getBIC(); bic = zi.getBIC();
@@ -456,18 +410,16 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta
* @Test(expected = IndexOutOfBoundsException.class) * @Test(expected = IndexOutOfBoundsException.class)
* @throws Exception * @throws Exception
*/ */
public void testExceptionOnPDF14() throws Exception public void testExceptionOnPDF14() throws Exception {
{
final String TARGET_PDF = "./target/testout-MustangGnuaccountingBeispielRE-20170509_505new.pdf"; final String TARGET_PDF = "./target/testout-MustangGnuaccountingBeispielRE-20170509_505new.pdf";
boolean exceptionThrown = false; boolean exceptionThrown = false;
// the writing part // the writing part
try(InputStream SOURCE_PDF = try (InputStream SOURCE_PDF = this.getClass()
this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505PDF14.pdf"); .getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505PDF14.pdf");
ZUGFeRDExporter ze = new ZUGFeRDExporterFromA1Factory() ZUGFeRDExporter ze = new ZUGFeRDExporterFromA1Factory().load(SOURCE_PDF)) {
.load(SOURCE_PDF)) {
ze.PDFattachZugferdFile(this); ze.PDFattachZugferdFile(this);
ze.export(TARGET_PDF); ze.export(TARGET_PDF);
@@ -482,5 +434,4 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta
} }
} }