package com.softwaremill.common.cdi.autofactory; import org.jboss.arquillian.testng.Arquillian; import org.testng.annotations.Test; import javax.inject.Inject; import java.util.Arrays; import static org.assertj.core.api.Assertions.assertThat; /** * @author Adam Warski (adam at warski dot org) */ public abstract class AbstractAutoFactoryTest extends Arquillian { @Inject private PriceCalculator.Factory priceCalculatorFactory; @Inject private TotalPriceCalculator.Factory totalPriceCalculatorFactory; @Test public void testInjectOneNormalBeanIntoFactory() { // Given Product product = new Product(35); PriceCalculator priceCalculator = priceCalculatorFactory.create(product); // When int finalPrice = priceCalculator.getFinalPrice(); // Then assertThat(finalPrice).isEqualTo(25); } @Test public void testInjectFactoryAndBeanIntoFactory() { // Given Product product1 = new Product(13); Product product2 = new Product(17); Product product3 = new Product(19); TotalPriceCalculator totalPriceCalculator = totalPriceCalculatorFactory.create(Arrays.asList(product1, product2, product3), 1); // When int sum = totalPriceCalculator.getTotalPrice(); // Then assertThat(sum).isEqualTo(17); // 13-10 + 17-10 + 19-10 - 1 - (3/2) } }