package com.processpuzzle.user_session.domain; import static org.hamcrest.core.IsEqual.equalTo; import static org.hamcrest.core.IsNot.not; import static org.hamcrest.core.IsNull.notNullValue; import static org.hamcrest.core.IsSame.sameInstance; import static org.junit.Assert.assertThat; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.mockito.MockitoAnnotations; public class DefaultRequestContextTest { private static UserSession userSession; private UserRequestContext requestContext; private UserRequestContextFactory requestContextFactory; @BeforeClass public static void beforeAllTests() { MockitoAnnotations.initMocks( DefaultRequestContextTest.class ); // userSession = StaticUserSessionHolder.getUserSession( mockUser ); } @Before public void beforeEachTests() { requestContextFactory = new DefaultUserRequestContextFactory(); requestContext = requestContextFactory.create( userSession ); } @Test public void create() { assertThat( requestContext, notNullValue() ); assertThat( requestContext.getId(), notNullValue() ); assertThat( "Factory sores the newly created UserRequestContext in a thread local variable.", requestContextFactory.getRequestContext(), sameInstance( requestContext )); assertThat( "User session to which this reqest belongs can be retrieved.", requestContext.getUserSession(), sameInstance( userSession )); } @Test public void create_ShouldBypassRecreation() { String previousId = requestContext.getId(); UserRequestContext returnedContext = requestContextFactory.create( requestContext ); assertThat( returnedContext, sameInstance( requestContext )); assertThat( "Creates new id", returnedContext.getId(), not( equalTo( previousId ))); assertThat( "Previously created ids are stored.", returnedContext.getIds().length, equalTo(2) ); } @Test public void getRequestContext() { assertThat( "Request context can be retrieved from factory.", requestContextFactory.getRequestContext(), sameInstance( requestContext )); } }