package org.needle4j.db.testdata; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.List; import javax.persistence.EntityManager; import org.junit.Rule; import org.junit.Test; import org.needle4j.db.Address; import org.needle4j.db.Person; import org.needle4j.junit.DatabaseRule; public class AbstractTestdataBuilderTest { @Rule public DatabaseRule databaseRule = new DatabaseRule(); @Test public void testSaveOrUpdate() throws Exception { new AddressTestDataBuilder(databaseRule.getEntityManager()).buildAndSave(); List<Address> loadAllObjects = databaseRule.getTransactionHelper().loadAllObjects(Address.class); assertEquals(1, loadAllObjects.size()); } @Test public void testHasEntityManager() throws Exception { assertFalse(new AddressTestDataBuilder().hasEntityManager()); assertTrue(new AddressTestDataBuilder(databaseRule.getEntityManager()).hasEntityManager()); } @Test(expected = IllegalStateException.class) public void testSaveOrUpdate_withOutEntityManager() throws Exception { new AddressTestDataBuilder().buildAndSave(); } @Test public void testGetId() throws Exception { assertEquals(0, new AddressTestDataBuilder().getId()); assertEquals(1, new AddressTestDataBuilder().getId()); assertEquals(2, new AddressTestDataBuilder().getId()); } @Test(expected = RuntimeException.class) public void testBuildAndSave_Unsuccessful() throws Exception { new AbstractTestdataBuilder<Person>(databaseRule.getEntityManager()) { @Override public Person build() { return null; } }.buildAndSave(); } class AddressTestDataBuilder extends AbstractTestdataBuilder<Address> { public AddressTestDataBuilder() { super(); } public AddressTestDataBuilder(EntityManager entityManager) { super(entityManager); } @Override public Address build() { Address address = new Address(); address.setStreet("street"); return address; } } }