reflexive tests (using validator component to test library component)

This commit is contained in:
Jochen Stärk
2020-09-14 19:57:55 +02:00
parent e49330adbe
commit b70e3571be
3 changed files with 89 additions and 26 deletions

View File

@@ -33,6 +33,8 @@ switch
- switch recipient, shipping address from contact to tradeparty - switch recipient, shipping address from contact to tradeparty
- new invoicecorrection class - new invoicecorrection class
- order-x read support - order-x read support
- automated tests zuv/verapdf validate created library test files
### 2.0 still todo ### 2.0 still todo
- verapdf as prevalidation? - verapdf as prevalidation?
@@ -40,20 +42,17 @@ switch
- new sample invoice - new sample invoice
- prompt for source file for validation has to be pdf - prompt for source file for validation has to be pdf
- be able to disable "source pdf set to timeout" - be able to disable "source pdf set to timeout"
- automated tests zuv/verapdf validate created library test files
- *visualizer to work with Extended profile - *visualizer to work with Extended profile
- *visualizer tests - *visualizer tests
- *validator not to XR error on ZF files (only notices) - *validator not to XR error on ZF files (only notices)
- *from A3 does not seem tow ork see mustangreaderwriteredgetest:testedgeexport - *from A3 does not seem tow ork see mustangreaderwriteredgetest:testedgeexport
- xmp errors may not show correctly in log - xmp errors may not show correctly in log
- switch for no log and no notices - switch for no log and no notices
- merge readmes and history.md
- homepage to be updated accordingly - homepage to be updated accordingly
- confirm correct generation from pdf/a3 files zf2edgetest - confirm correct generation from pdf/a3 files zf2edgetest
- *correctiontest exports zf1+zf2? - *correctiontest exports zf1+zf2?
- *use validator in tests of library - *use validator in tests of library
- *USt 0% wird aus invoice-klasse noch nicht sauber abgefangen - *USt 0% wird aus invoice-klasse noch nicht sauber abgefangen
- *ownContact sollte in einen Contact schreiben
- new features additional docs, contract id, periods, corrected invoices, discounts, occurrence dates and periods - new features additional docs, contract id, periods, corrected invoices, discounts, occurrence dates and periods
Mustangproject 1.7.8 Mustangproject 1.7.8

View File

@@ -45,13 +45,13 @@ public class ZF2PushTest extends TestCase {
String amountStr = "1.00"; String amountStr = "1.00";
BigDecimal amount = new BigDecimal(amountStr); BigDecimal amount = new BigDecimal(amountStr);
try (InputStream SOURCE_PDF = this.getClass() try (InputStream SOURCE_PDF = this.getClass()
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505.pdf"); .getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1().setProducer("My Application") ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1().setProducer("My Application")
.setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).ignorePDFAErrors() .setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).ignorePDFAErrors()
.load(SOURCE_PDF)) { .load(SOURCE_PDF)) {
ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setContractReferencedDocument("0815").setSender(new TradeParty(orgname,"teststr", "55232","teststadt","DE")).setOwnTaxID("4711").setOwnVATID("DE19990815").setRecipient(new TradeParty("Franz Müller","teststr.12", "55232", "Entenhausen", "DE")).setNumber(number).addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(0)), amount, new BigDecimal(1.0)))); ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setContractReferencedDocument("0815").setSender(new TradeParty(orgname,"teststr", "55232","teststadt","DE")).setOwnTaxID("4711").setOwnVATID("DE19990815").setRecipient(new TradeParty("Franz Müller","teststr.12", "55232", "Entenhausen", "DE")).setNumber(number).addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0))));
String theXML = new String(ze.getProvider().getXML()); String theXML = new String(ze.getProvider().getXML());
assertTrue(theXML.contains("<rsm:CrossIndustryInvoice")); assertTrue(theXML.contains("<rsm:CrossIndustryInvoice"));
ze.export(TARGET_PDF); ze.export(TARGET_PDF);
@@ -66,7 +66,7 @@ public class ZF2PushTest extends TestCase {
assertTrue(zi.getUTF8().contains("0815")); assertTrue(zi.getUTF8().contains("0815"));
// Reading ZUGFeRD // Reading ZUGFeRD
assertEquals(amountStr, zi.getAmount()); assertEquals("1.19", zi.getAmount());
assertEquals(zi.getHolder(), orgname); assertEquals(zi.getHolder(), orgname);
assertEquals(zi.getForeignReference(), number); assertEquals(zi.getForeignReference(), number);
try { try {
@@ -84,13 +84,13 @@ public class ZF2PushTest extends TestCase {
String amountStr = "1.00"; String amountStr = "1.00";
BigDecimal amount = new BigDecimal(amountStr); BigDecimal amount = new BigDecimal(amountStr);
try (InputStream SOURCE_PDF = this.getClass() try (InputStream SOURCE_PDF = this.getClass()
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505.pdf"); .getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1().setProducer("My Application") ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1().setProducer("My Application")
.setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).ignorePDFAErrors() .setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).ignorePDFAErrors()
.load(SOURCE_PDF)) { .load(SOURCE_PDF)) {
ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname,"teststr", "55232","teststadt","DE").addTaxID("0815")).setOwnVATID("0815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("4711").setContact(new Contact("Franz Müller","01779999999", "franz@mueller.de", "teststr. 12", "55232", "Entenhausen", "DE"))).setNumber(number).addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(0)), amount, new BigDecimal(1.0))) ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname,"teststr", "55232","teststadt","DE").addTaxID("0815")).setOwnVATID("0815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE4711").setContact(new Contact("Franz Müller","01779999999", "franz@mueller.de", "teststr. 12", "55232", "Entenhausen", "DE"))).setNumber(number).addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)))
); );
byte[] b={12,13}; byte[] b={12,13};
@@ -109,7 +109,7 @@ public class ZF2PushTest extends TestCase {
assertTrue(zi.getUTF8().contains("EUR")); assertTrue(zi.getUTF8().contains("EUR"));
// Reading ZUGFeRD // Reading ZUGFeRD
assertEquals(amountStr, zi.getAmount()); assertEquals("1.19", zi.getAmount());
assertEquals(zi.getHolder(), orgname); assertEquals(zi.getHolder(), orgname);
assertEquals(zi.getForeignReference(), number); assertEquals(zi.getForeignReference(), number);
try { try {
@@ -128,16 +128,16 @@ public class ZF2PushTest extends TestCase {
String amountStr = "3.00"; String amountStr = "3.00";
BigDecimal amount = new BigDecimal(amountStr); BigDecimal amount = new BigDecimal(amountStr);
try (InputStream SOURCE_PDF = this.getClass() try (InputStream SOURCE_PDF = this.getClass()
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505.pdf"); .getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1().setProducer("My Application") ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1().setProducer("My Application")
.setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).ignorePDFAErrors() .setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).ignorePDFAErrors()
.load(SOURCE_PDF)) { .load(SOURCE_PDF)) {
ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname,"teststr", "55232","teststadt","DE")).setOwnTaxID("4711").setOwnVATID("0815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")).setNumber(number) ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname,"teststr", "55232","teststadt","DE")).setOwnTaxID("4711").setOwnVATID("0815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")).setNumber(number)
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(0)), amount, new BigDecimal(1.0)).addCharge(new Charge(new BigDecimal(0.1),new BigDecimal(0), "","K"))) .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addCharge(new Charge(new BigDecimal(0.1),new BigDecimal(0), "","K")))
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(0)), amount, new BigDecimal(1.0)).addAllowance(new Allowance(new BigDecimal(0.07),new BigDecimal(0), "","K"))) .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance(new BigDecimal(0.07),new BigDecimal(0), "","K")))
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(0)), amount, new BigDecimal(1.0)).addAllowance(new Allowance(new BigDecimal(0.07),new BigDecimal(0), "","K")).addCharge(new Charge(new BigDecimal(0.1),new BigDecimal(0), "","K"))) .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance(new BigDecimal(0.07),new BigDecimal(0), "","K")).addCharge(new Charge(new BigDecimal(0.1),new BigDecimal(0), "","K")))
); );
String theXML = new String(ze.getProvider().getXML()); String theXML = new String(ze.getProvider().getXML());
@@ -153,7 +153,7 @@ public class ZF2PushTest extends TestCase {
assertTrue(zi.getUTF8().contains("EUR")); assertTrue(zi.getUTF8().contains("EUR"));
// Reading ZUGFeRD // Reading ZUGFeRD
assertEquals("9.00", zi.getAmount()); assertEquals("10.71", zi.getAmount());
assertEquals(zi.getHolder(), orgname); assertEquals(zi.getHolder(), orgname);
assertEquals(zi.getForeignReference(), number); assertEquals(zi.getForeignReference(), number);
try { try {
@@ -172,16 +172,16 @@ public class ZF2PushTest extends TestCase {
String amountStr = "3.00"; String amountStr = "3.00";
BigDecimal amount = new BigDecimal(amountStr); BigDecimal amount = new BigDecimal(amountStr);
try (InputStream SOURCE_PDF = this.getClass() try (InputStream SOURCE_PDF = this.getClass()
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505.pdf"); .getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1().setProducer("My Application") ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1().setProducer("My Application")
.setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).ignorePDFAErrors() .setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).ignorePDFAErrors()
.load(SOURCE_PDF)) { .load(SOURCE_PDF)) {
ze.setTransaction(new Invoice().setCurrency("CHF").setDueDate(new Date()).setOccurrenceDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname,"teststr", "55232","teststadt","DE")).setOwnTaxID("4711").setOwnVATID("0815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")).setNumber(number) ze.setTransaction(new Invoice().setCurrency("CHF").setDueDate(new Date()).setOccurrenceDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname,"teststr", "55232","teststadt","DE")).setOwnTaxID("4711").setOwnVATID("0815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")).setNumber(number)
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(0)), amount, new BigDecimal(1.0))) .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)))
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(0)), amount, new BigDecimal(1.0))) .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)))
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(0)), amount, new BigDecimal(1.0))) .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)))
.addCharge(new Charge(new BigDecimal(0.5),new BigDecimal(0), "","K")) .addCharge(new Charge(new BigDecimal(0.5),new BigDecimal(0), "","K"))
.addAllowance(new Allowance(new BigDecimal(0.2),new BigDecimal(0), "","K")) .addAllowance(new Allowance(new BigDecimal(0.2),new BigDecimal(0), "","K"))
@@ -199,7 +199,7 @@ public class ZF2PushTest extends TestCase {
assertFalse(zi.getUTF8().contains("EUR")); assertFalse(zi.getUTF8().contains("EUR"));
// Reading ZUGFeRD // Reading ZUGFeRD
assertEquals("9.00", zi.getAmount()); assertEquals("10.71", zi.getAmount());
assertEquals(zi.getHolder(), orgname); assertEquals(zi.getHolder(), orgname);
assertEquals(zi.getForeignReference(), number); assertEquals(zi.getForeignReference(), number);
try { try {
@@ -220,17 +220,16 @@ public class ZF2PushTest extends TestCase {
BigDecimal price = new BigDecimal(priceStr); BigDecimal price = new BigDecimal(priceStr);
BigDecimal amount=new BigDecimal(-1.0); BigDecimal amount=new BigDecimal(-1.0);
try (InputStream SOURCE_PDF = this.getClass() try (InputStream SOURCE_PDF = this.getClass()
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505.pdf"); .getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1().setProducer("My Application") ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1().setProducer("My Application")
.setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).ignorePDFAErrors() .setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).ignorePDFAErrors()
.load(SOURCE_PDF)) { .load(SOURCE_PDF)) {
Invoice i=new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setOccurrencePeriod(new Date(),new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname,"teststr", "55232","teststadt","DE").addTaxID("4711").addVATID("0815")).setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("0815")).setNumber(number) Invoice i=new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setOccurrencePeriod(new Date(),new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname,"teststr", "55232","teststadt","DE").addTaxID("4711").addVATID("DE0815")).setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE0815")).setNumber(number)
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(0)), price, amount)) .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, amount))
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(0)), price, amount)) .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, amount))
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(0)), price, amount)).setCorrection("0815"); .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, amount)).setCorrection("0815");
System.err.println("deb "+i.getOwnTaxID());
ze.setTransaction(i); ze.setTransaction(i);
String theXML = new String(ze.getProvider().getXML()); String theXML = new String(ze.getProvider().getXML());
assertTrue(theXML.contains("<rsm:CrossIndustryInvoice")); assertTrue(theXML.contains("<rsm:CrossIndustryInvoice"));
@@ -245,7 +244,7 @@ public class ZF2PushTest extends TestCase {
assertTrue(zi.getUTF8().contains("EUR")); assertTrue(zi.getUTF8().contains("EUR"));
// Reading ZUGFeRD // Reading ZUGFeRD
assertEquals("-3.00", zi.getAmount()); assertEquals("-3.57", zi.getAmount());
assertEquals(zi.getHolder(), orgname); assertEquals(zi.getHolder(), orgname);
assertEquals(zi.getForeignReference(), number); assertEquals(zi.getForeignReference(), number);
try { try {

View File

@@ -0,0 +1,65 @@
package org.mustangproject.validator;
import org.xmlunit.builder.Input;
import org.xmlunit.xpath.JAXPXPathEngine;
import org.xmlunit.xpath.XPathEngine;
import javax.xml.transform.Source;
import java.io.File;
import static org.xmlunit.assertj.XmlAssert.assertThat;
public class LibraryTest extends ResourceCase {
public void testLibraryPush() {
File tempFile = new File("../library/target/testout-ZF2Push.pdf");
assertTrue(tempFile.exists());
ZUGFeRDValidator zfv = new ZUGFeRDValidator();
String res = zfv.validate(tempFile.getAbsolutePath());
assertThat(res).valueByXPath("/validation/pdf/summary/@status")
.isEqualTo("valid");
assertThat(res).valueByXPath("/validation/xml/summary/@status")
.isEqualTo("valid");
assertThat(res).valueByXPath("/validation/summary/@status")
.isEqualTo("valid");
tempFile = new File("../library/target/testout-ZF2Correction.pdf");
assertTrue(tempFile.exists());
res = zfv.validate(tempFile.getAbsolutePath());
assertThat(res).valueByXPath("/validation/pdf/summary/@status")
.isEqualTo("valid");
assertThat(res).valueByXPath("/validation/xml/summary/@status")
.isEqualTo("valid");
assertThat(res).valueByXPath("/validation/summary/@status")
.isEqualTo("valid");
}
public void testLibraryPushCorrection() {
File tempFile = new File("../library/target/testout-ZF2Correction.pdf");
assertTrue(tempFile.exists());
ZUGFeRDValidator zfv = new ZUGFeRDValidator();
String res = zfv.validate(tempFile.getAbsolutePath());
assertThat(res).valueByXPath("/validation/pdf/summary/@status")
.isEqualTo("valid");
assertThat(res).valueByXPath("/validation/xml/summary/@status")
.isEqualTo("valid");
assertThat(res).valueByXPath("/validation/summary/@status")
.isEqualTo("valid");
}
}