package eu.ggnet.dwoss.spec.eao; import java.util.*; 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.entity.piece.Cpu; import eu.ggnet.dwoss.spec.entity.piece.Gpu; import eu.ggnet.dwoss.spec.entity.*; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; public class ProductSpecEaoIT { private EntityManagerFactory emf; private 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 of findByPartNo method, of class ProductSpecEao. */ @Test public void testFindByPartNo() { em.getTransaction().begin(); ProductSeries veriton = new ProductSeries(TradeName.FUJITSU, ProductGroup.DESKTOP, "Veriton"); em.persist(veriton); ProductFamily m400 = new ProductFamily("M400"); m400.setSeries(veriton); em.persist(m400); ProductModel M480G = new ProductModel("M480G"); M480G.setFamily(m400); em.persist(M480G); Desktop M480G_1 = new Desktop("PX.99999.321", 2L); M480G_1.setModel(M480G); M480G_1.setVideoPorts(EnumSet.allOf(BasicSpec.VideoPort.class)); M480G_1.setComment("Ein Kommentar"); M480G_1.setCpu(new Cpu(Cpu.Series.CORE, "Eine CPU", Cpu.Type.MOBILE, 123.0, 2)); M480G_1.setGpu(new Gpu(Gpu.Type.MOBILE, Gpu.Series.RADEON_HD_4000, "Eine Graphiccarte")); M480G_1.setOs(Desktop.Os.LINUX); M480G_1.setMemory(12345); M480G_1.add(Desktop.Hdd.ROTATING_1000); M480G_1.add(Desktop.Odd.BLURAY_COMBO); M480G_1.setExtras(Desktop.Extra.KAMERA); em.persist(M480G_1); em.getTransaction().commit(); em.getTransaction().begin(); ProductSpecEao specEao = new ProductSpecEao(em); Desktop spec = (Desktop)specEao.findByPartNo(M480G_1.getPartNo()); assertNotNull(spec); assertEquals(M480G_1.getExtras(), spec.getExtras()); } @Test public void testFindByProductId() { em.getTransaction().begin(); ProductSeries veriton = new ProductSeries(TradeName.FUJITSU, ProductGroup.DESKTOP, "Veriton"); em.persist(veriton); ProductFamily m400 = new ProductFamily("M400"); m400.setSeries(veriton); em.persist(m400); ProductModel M480G = new ProductModel("M480G"); M480G.setFamily(m400); em.persist(M480G); Desktop M480G_1 = new Desktop("PX.99999.321", 2L); M480G_1.setModel(M480G); M480G_1.setProductId(5L); M480G_1.setVideoPorts(EnumSet.allOf(BasicSpec.VideoPort.class)); M480G_1.setComment("Ein Kommentar"); M480G_1.setCpu(new Cpu(Cpu.Series.CORE, "Eine CPU", Cpu.Type.MOBILE, 123.0, 2)); M480G_1.setGpu(new Gpu(Gpu.Type.MOBILE, Gpu.Series.RADEON_HD_4000, "Eine Graphiccarte")); M480G_1.setOs(Desktop.Os.LINUX); M480G_1.setMemory(12345); M480G_1.add(Desktop.Hdd.ROTATING_1000); M480G_1.add(Desktop.Odd.BLURAY_COMBO); M480G_1.setExtras(Desktop.Extra.KAMERA); em.persist(M480G_1); Desktop M480G_2 = new Desktop("PX.99999.AAA", 2L); M480G_2.setModel(M480G); M480G_2.setProductId(6L); M480G_2.setVideoPorts(EnumSet.allOf(BasicSpec.VideoPort.class)); M480G_2.setComment("Ein Kommentar"); M480G_2.setCpu(new Cpu(Cpu.Series.CORE, "Eine CPU", Cpu.Type.MOBILE, 123.0, 2)); M480G_2.setGpu(new Gpu(Gpu.Type.MOBILE, Gpu.Series.RADEON_HD_4000, "Eine Graphiccarte")); M480G_2.setOs(Desktop.Os.LINUX); M480G_2.setMemory(12345); M480G_2.add(Desktop.Hdd.ROTATING_1000); M480G_2.add(Desktop.Odd.BLURAY_COMBO); M480G_2.setExtras(Desktop.Extra.KAMERA); em.persist(M480G_2); em.getTransaction().commit(); em.getTransaction().begin(); ProductSpecEao specEao = new ProductSpecEao(em); Desktop spec = (Desktop)specEao.findByProductId(5L); assertNotNull(spec); List<ProductSpec> productSpecs = specEao.findByProductIds(Arrays.asList(5L, 6L)); assertEquals(2, productSpecs.size()); em.getTransaction().commit(); } }