/** * */ package org.minnal.jpa; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.io.IOException; import org.activejpa.jpa.JPAContext; import org.glassfish.jersey.server.ContainerRequest; import org.glassfish.jersey.server.ContainerResponse; import org.minnal.core.config.DatabaseConfiguration; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; /** * @author ganeshs * */ public class OpenSessionInViewFilterTest { private OpenSessionInViewFilter filter; private ContainerRequest request; private ContainerResponse response; private JPAContext context; private DatabaseConfiguration configuration; @BeforeMethod public void setup() { configuration = mock(DatabaseConfiguration.class); filter = spy(new OpenSessionInViewFilter(configuration)); context = mock(JPAContext.class); request = mock(ContainerRequest.class); response = mock(ContainerResponse.class); doReturn(context).when(filter).getContext(); } @Test public void shouldInitializeEntityManagerWhenRequestReceived() throws IOException { filter.requestReceived(request); verify(context).getEntityManager(); } @Test public void shouldRollbackTransactionIfTrasactionIsOpenWhenRequestCompleted() throws IOException { filter.requestReceived(request); when(context.isTxnOpen()).thenReturn(true); filter.requestCompleted(request, response); verify(context).closeTxn(true); } @Test public void shouldCloseContextInResponseFilter() throws IOException { filter.requestReceived(request); filter.requestCompleted(request, response); verify(context).close(); } }