package io.konik.validation; import io.konik.InvoiceTransformer; import io.konik.util.Items; import io.konik.zugferd.Invoice; import io.konik.zugferd.entity.trade.item.Item; import io.konik.zugferd.entity.trade.item.SpecifiedMonetarySummation; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import java.io.IOException; import java.io.InputStream; import java.util.Arrays; import java.util.Collection; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; @RunWith(Parameterized.class) public class AmountCalculatorCalculateSpecifiedMonetarySummationTest { @Parameterized.Parameters(name = "Calculating specified monetary summation for object with index = {index}") public static Collection<Object[]> data() throws IOException { InputStream xml = AmountCalculatorCalculateSpecifiedMonetarySummationTest.class .getResourceAsStream("/ZUGFeRD_Invoice_with_discounts_and_charges.xml"); InvoiceTransformer transformer = new InvoiceTransformer(); Invoice invoice = transformer.toModel(xml); List<Item> items = Items.purchasableItemsOnly(invoice.getTrade().getItems()); Object[][] objects = new Object[items.size()][1]; for (int i = 0; i < items.size(); i++) { objects[i][0] = items.get(i); } return Arrays.asList(objects); } @Parameterized.Parameter public Item item; @Test public void test() { //when: SpecifiedMonetarySummation monetarySummation = AmountCalculator.calculateSpecifiedMonetarySummation(item); //then: assertThat(item.getSettlement().getMonetarySummation().getLineTotal()) .isEqualToComparingFieldByField(monetarySummation.getLineTotal()); assertThat(item.getSettlement().getMonetarySummation().getTotalAllowanceCharge().getValue()) .isEqualByComparingTo(monetarySummation.getTotalAllowanceCharge().getValue()); } }