package io.konik.validation; import io.konik.InvoiceTransformer; import io.konik.zugferd.Invoice; import io.konik.zugferd.entity.trade.MonetarySummation; import org.junit.Test; import java.io.IOException; import java.io.InputStream; import static org.assertj.core.api.Assertions.assertThat; public class AmountCalculatorTest { @Test public void shouldCalculateMonetarySummationForExistingInvoice() throws IOException { //given: InputStream xml = getClass().getResourceAsStream("/ZUGFeRD_Invoice_with_discounts_and_charges.xml"); InvoiceTransformer transformer = new InvoiceTransformer(); Invoice invoice = transformer.toModel(xml); MonetarySummation invoiceMonetarySummation = invoice.getTrade().getSettlement().getMonetarySummation(); //when: MonetarySummation summation = AmountCalculator.recalculate(invoice).getMonetarySummation(); //then: assertThat(summation.getTaxTotal()) .isEqualToComparingFieldByField(invoiceMonetarySummation.getTaxTotal()); assertThat(summation.getLineTotal()) .isEqualToComparingFieldByField(invoiceMonetarySummation.getLineTotal()); assertThat(summation.getTotalPrepaid()) .isEqualToComparingFieldByField(invoiceMonetarySummation.getTotalPrepaid()); assertThat(summation.getTaxBasisTotal()) .isEqualToComparingFieldByField(invoiceMonetarySummation.getTaxBasisTotal()); assertThat(summation.getAllowanceTotal()) .isEqualToComparingFieldByField(invoiceMonetarySummation.getAllowanceTotal()); assertThat(summation.getChargeTotal()) .isEqualToComparingFieldByField(invoiceMonetarySummation.getChargeTotal()); assertThat(summation.getDuePayable()) .isEqualToComparingFieldByField(invoiceMonetarySummation.getDuePayable()); assertThat(summation.getGrandTotal()) .isEqualToComparingFieldByField(invoiceMonetarySummation.getGrandTotal()); } }