/** * */ package org.activejpa.jpa; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.when; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotEquals; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertNull; import java.util.Collections; import javax.persistence.EntityManagerFactory; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; /** * @author ganeshs * */ public class JPATest { private EntityManagerFactory emf; private EntityManagerProvider emp; private JPA jpa; @BeforeMethod public void setup() throws Exception { jpa = spy(JPA.instance); emf = mock(EntityManagerFactory.class); emp = new EntityManagerProviderImpl(emf); doReturn(emf).when(jpa).createEntityManagerFactory("test", Collections.<String, String>emptyMap()); doReturn(emf).when(jpa).createEntityManagerFactory("test1", Collections.<String, String>emptyMap()); } @Test public void shouldAddPersistenceUnitUsingName() { jpa.addPersistenceUnit("test"); JPAConfig config = jpa.getConfig("test"); assertDefaultConfig(config, true); } @Test public void shouldAddDefaultPersistenceUnitUsingName() { jpa.addPersistenceUnit("test", true); JPAConfig config = jpa.getConfig("test"); assertDefaultConfig(config, true); } @Test public void shouldAddNonDefaultPersistenceUnitUsingName() { jpa.addPersistenceUnit("test", false); JPAConfig config = jpa.getConfig("test"); assertDefaultConfig(config, false); } @Test public void shouldAddEntityManagerFactory() { jpa.addPersistenceUnit("test", emf); JPAConfig config = jpa.getConfig("test"); assertDefaultConfig(config, true); } @Test public void shouldAddDefaultEntityManagerFactory() { jpa.addPersistenceUnit("test", emf, true); JPAConfig config = jpa.getConfig("test"); assertDefaultConfig(config, true); } @Test public void shouldAddPersistenceUnitWithProperties() { jpa.addPersistenceUnit("test", Collections.<String, String>emptyMap(), false); JPAConfig config = jpa.getConfig("test"); assertDefaultConfig(config, false); } @Test public void shouldAddDefaultPersistenceUnitWithProperties() { jpa.addPersistenceUnit("test", Collections.<String, String>emptyMap(), true); JPAConfig config = jpa.getConfig("test"); assertDefaultConfig(config, true); } @Test public void shouldClose() { when(emf.isOpen()).thenReturn(true); jpa.addPersistenceUnit("test"); jpa.addPersistenceUnit("test1"); jpa.close(); assertNull(jpa.getConfig("test")); assertNull(jpa.getConfig("test1")); verify(emf, times(2)).close(); } private void assertDefaultConfig(JPAConfig config, boolean isDefault) { assertNotNull(config); if(isDefault) { assertEquals(config, jpa.getDefaultConfig()); } else { assertNotEquals(config, jpa.getDefaultConfig()); } assertEquals(config.getEntityManagerProvider().getEntityManagerFactory(), emf); } }