content: /**
   * 
   */
  package org.activejpa.jpa;
  
  import static org.mockito.Mockito.mock;
  import static org.mockito.Mockito.verify;
  import static org.mockito.Mockito.when;
  import static org.testng.Assert.assertEquals;
  import static org.testng.Assert.assertFalse;
  import static org.testng.Assert.assertNotEquals;
  import static org.testng.Assert.assertNotNull;
  import static org.testng.Assert.assertTrue;
  
  import javax.persistence.EntityManagerFactory;
  
  import org.testng.annotations.BeforeMethod;
  import org.testng.annotations.Test;
  
  /**
   * @author ganeshs
   *
   */
  public class JPAConfigTest {
  	
  	private JPAConfig config;
  	
  	private EntityManagerProvider emp;
  	
  	private EntityManagerFactory emf;
  
  	@BeforeMethod
  	public void setup() {
  		emf = mock(EntityManagerFactory.class);
  		emp = new EntityManagerProviderImpl(emf);
  		config = new JPAConfig("test", emp);
  	}
  	
  	@Test
  	public void shouldGetContext() {
  		JPAContext context = config.getContext();
  		assertNotNull(context);
  		assertFalse(context.isReadOnly());
  	}
  	
  	@Test
  	public void shouldGetReadOnlyContext() {
  		JPAContext context = config.getContext(true);
  		assertNotNull(context);
  		assertTrue(context.isReadOnly());
  	}
  	
  	@Test
  	public void shouldGetReadWriteContext() {
  		JPAContext context = config.getContext(false);
  		assertNotNull(context);
  		assertFalse(context.isReadOnly());
  	}
  	
  	@Test
  	public void shouldGetSameContextSecondTime() {
  		JPAContext context = config.getContext(true);
  		assertEquals(context, config.getContext());
  	}
  	
  	@Test
  	public void shouldClose() {
  		when(emf.isOpen()).thenReturn(true);
  		config.close();
  		verify(emf).close();
  	}
  	
  	@Test
  	public void shouldClearContext() {
  		JPAContext context = config.getContext();
  		config.clearContext();
  		assertNotEquals(config.getContext(), context);
  	}
  }
  