package eu.ggnet.dwoss.redtape;
import java.util.*;
import javax.ejb.EJB;
import javax.ejb.embeddable.EJBContainer;
import javax.inject.Inject;
import javax.naming.NamingException;
import org.junit.*;
import eu.ggnet.dwoss.configuration.SystemConfig;
import eu.ggnet.dwoss.receipt.gen.ReceiptGeneratorOperation;
import eu.ggnet.dwoss.redtape.assist.RedTapePu;
import eu.ggnet.dwoss.redtape.entity.SalesProduct;
import eu.ggnet.dwoss.spec.assist.SpecPu;
import eu.ggnet.dwoss.spec.entity.ProductSpec;
import eu.ggnet.dwoss.spec.format.SpecFormater;
import eu.ggnet.dwoss.stock.assist.StockPu;
import eu.ggnet.dwoss.uniqueunit.assist.UniqueUnitPu;
import eu.ggnet.dwoss.util.UserInfoException;
import static org.junit.Assert.assertTrue;
/**
*
* @author bastian.venz
*/
public class SalesProductOperationIT {
private EJBContainer container;
@EJB
private RedTapeAgent redTapeAgent;
@EJB
private RedTapeWorker redTapeWorker;
@Inject
private ReceiptGeneratorOperation receiptGenerator;
@Before
public void setUp() throws NamingException {
Map<String, Object> c = new HashMap<>();
c.putAll(SpecPu.CMP_IN_MEMORY);
c.putAll(UniqueUnitPu.CMP_IN_MEMORY);
c.putAll(StockPu.CMP_IN_MEMORY);
c.putAll(RedTapePu.CMP_IN_MEMORY);
c.putAll(SystemConfig.OPENEJB_EJB_XML_DISCOVER);
c.putAll(SystemConfig.OPENEJB_LOG_WARN);
container = EJBContainer.createEJBContainer(c);
container.getContext().bind("inject", this);
}
@After
public void tearDown() {
container.close();
}
/**
* Test of getSalesProducts method, of class SalesProductOperation.
*/
@Test
public void testGetSalesProducts() {
SalesProduct product1 = new SalesProduct("Part1", "Name1", 1D, 1, "Descritpt1");
SalesProduct product2 = new SalesProduct("Part2", "Name2", 2D, 2, "Descritpt1");
SalesProduct product3 = new SalesProduct("Part3", "Name3", 3D, 3, "Descritpt1");
SalesProduct product4 = new SalesProduct("Part4", "Name4", 4D, 4, "Descritpt1");
redTapeAgent.persist(product1);
redTapeAgent.persist(product2);
redTapeAgent.persist(product3);
redTapeAgent.persist(product4);
assertTrue(redTapeAgent.findAll(SalesProduct.class).size() == 4);
}
/**
* Test of createSalesProduct method, of class SalesProductOperation.
* <p>
* @throws de.dw.util.UserInfoException
*/
@Ignore // Fails under Linux, Enable with Arquilian
@Test
public void testCreateSalesProduct() throws UserInfoException {
ProductSpec ps = receiptGenerator.makeProductSpec();
redTapeWorker.createSalesProduct(ps.getPartNo());
List<SalesProduct> salesProducts = redTapeAgent.findAll(SalesProduct.class);
SalesProduct salesProduct = new SalesProduct(ps.getPartNo(), ps.getModel().getName(), 0., ps.getProductId(), SpecFormater.toSingleLine(ps));
assertTrue(salesProducts.contains(salesProduct));
}
/**
* Test of updatePrice method, of class SalesProductOperation.
* <p>
* @throws de.dw.util.UserInfoException
*/
@Ignore // Fails under Linux, Enable with Arquilian
@Test
public void testUpdateSalesProdukt() throws UserInfoException {
ProductSpec ps = receiptGenerator.makeProductSpec();
SalesProduct createSalesProduct = redTapeWorker.createSalesProduct(ps.getPartNo());
createSalesProduct.setPrice(1337.37);
SalesProduct updateSalesProdukt = redTapeAgent.merge(createSalesProduct);
assertTrue(updateSalesProdukt.getPrice() == 1337.37);
}
/**
* Test of removeSalesProdukt method, of class SalesProductOperation.
*/
@Test
public void testRemoveSalesProdukt() {
SalesProduct product1 = new SalesProduct("Part1", "Name1", 1D, 1, "Descritpt1");
SalesProduct product2 = new SalesProduct("Part2", "Name2", 2D, 2, "Descritpt1");
SalesProduct product3 = new SalesProduct("Part3", "Name3", 3D, 3, "Descritpt1");
SalesProduct product4 = new SalesProduct("Part4", "Name4", 4D, 4, "Descritpt1");
redTapeAgent.persist(product1);
redTapeAgent.persist(product2);
redTapeAgent.persist(product3);
redTapeAgent.persist(product4);
redTapeAgent.remove(product1);
redTapeAgent.remove(product2);
assertTrue(redTapeAgent.findAll(SalesProduct.class).size() == 2);
}
}