package com.jboss.dvd.seam.test;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertNull;
import static org.testng.AssertJUnit.assertTrue;
import static org.testng.AssertJUnit.fail;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.PersistenceException;
import org.jboss.seam.mock.SeamTest;
import org.testng.annotations.Test;
import com.jboss.dvd.seam.Product;
public class ProductUnitTest
extends SeamTest
{
@Test
public void testRequiredAttributes()
throws Exception
{
new ComponentTest() {
@Override
protected void testComponents()
throws Exception
{
Product p = new Product();
EntityManager em = (EntityManager) getValue("#{entityManager}");
try {
em.persist(p);
fail("empty product persisted");
} catch (PersistenceException e) {
// good
}
}
}.run();
}
@Test
public void testCreateDelete()
throws Exception
{
final Product p = new Product();
p.setTitle("test");
new FacesRequest() {
protected void invokeApplication()
{
EntityManager em = (EntityManager) getValue("#{entityManager}");
em.persist(p);
}
}.run();
new FacesRequest() {
protected void invokeApplication()
{
EntityManager em = (EntityManager) getValue("#{entityManager}");
Product found = em.find(Product.class ,p.getProductId());
assertNotNull("find by id", found);
assertEquals("id", p.getProductId(), found.getProductId());
assertEquals("title", "test", found.getTitle());
em.remove(found);
}
}.run();
new FacesRequest() {
protected void invokeApplication()
{
EntityManager em = (EntityManager) getValue("#{entityManager}");
Product found = em.find(Product.class ,p.getProductId());
assertNull("deleted product", found);
}
}.run();
}
}