package eu.ggnet.dwoss.spec.emo;
import java.util.List;
import javax.persistence.*;
import org.junit.*;
import eu.ggnet.dwoss.rules.ProductGroup;
import eu.ggnet.dwoss.rules.TradeName;
import eu.ggnet.dwoss.spec.assist.SpecPu;
import eu.ggnet.dwoss.spec.eao.ProductSeriesEao;
import eu.ggnet.dwoss.spec.entity.ProductSeries;
import static org.junit.Assert.*;
/**
*
* @author oliver.guenther
*/
public class ProductSeriesEmoIT {
EntityManagerFactory emf;
EntityManager em;
;
@Before
public void setUp() {
emf = Persistence.createEntityManagerFactory(SpecPu.NAME, SpecPu.JPA_IN_MEMORY);
em = emf.createEntityManager();
}
@After
public void tearDown() {
em.close();
emf.close();
}
@Test
public void testRequestBrandGroupName() {
TradeName b1 = TradeName.APPLE;
ProductGroup g1 = ProductGroup.PROJECTOR;
String n1 = "SERIES";
TradeName b2 = TradeName.LENOVO;
ProductGroup g2 = ProductGroup.DESKTOP;
String n2 = "SERIES";
em.getTransaction().begin();
em.persist(new ProductSeries(b1, g1, n1));
em.getTransaction().commit();
em.getTransaction().begin();
ProductSeriesEmo seriesEmo = new ProductSeriesEmo(em);
ProductSeries productSeries = seriesEmo.request(b1, g1, n1);
assertNotNull(productSeries);
assertEquals(b1, productSeries.getBrand());
assertEquals(g1, productSeries.getGroup());
assertEquals(n1, productSeries.getName());
em.getTransaction().commit();
em.getTransaction().begin();
productSeries = seriesEmo.request(b2, g2, n2);
assertNotNull(productSeries);
assertEquals(b2, productSeries.getBrand());
assertEquals(g2, productSeries.getGroup());
assertEquals(n2, productSeries.getName());
em.getTransaction().commit();
em.getTransaction().begin();
seriesEmo.request(b2, g2, n2);
seriesEmo.request(b2, g2, n2);
seriesEmo.request(b2, g2, n2);
List<ProductSeries> pss = new ProductSeriesEao(em).findAll();
assertNotNull(pss);
assertEquals("Only Two Elements should exist", 2, pss.size());
em.getTransaction().commit();
}
}