package com.processpuzzle.application.configuration.control;
import java.io.FileNotFoundException;
import javax.servlet.http.HttpSession;
import static org.hamcrest.core.IsNull.*;
import static org.hamcrest.core.IsEqual.*;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.mockito.Mockito.*;
import com.processpuzzle.application.configuration.domain.ProcessPuzzleContext;
import com.processpuzzle.application.configuration.domain.PropertyContext;
import com.processpuzzle.application.configuration.domain.PropertyKeys;
import com.processpuzzle.litest.template.MockServletRunner;
public class SkinSelectorFilterTest {
private static MockServletRunner servletRunner;
@BeforeClass
public static void beforeAllTests() throws FileNotFoundException {
servletRunner = new MockServletRunner();
servletRunner.setUp();
createMockPropertyContext();
}
@Before
public void beforeEachTests() {
servletRunner.setFilter( SkinSelectorFilter.class );
servletRunner.doFilter();
}
@Test
public void doFilter_ShouldPlaceSkinDescriptorInSessionContext() {
// Implicit SETUP and EXCERCISE.
// VERIFY:
HttpSession session = servletRunner.getSession();
SkinDescriptor skinDescriptor = (SkinDescriptor) session.getAttribute( SkinSelectorFilter.SKIN_ATTRIBUTE_NAME );
assertThat( skinDescriptor, notNullValue() );
assertThat( skinDescriptor.getSkinName(), equalTo( MockServletRunner.DEFAULT_SKIN_NAME ) );
assertThat( skinDescriptor.getStylesPath(), equalTo( SkinDescriptor.BASE_PATH + "/" + MockServletRunner.DEFAULT_SKIN_PATH + SkinDescriptor.STYLES_FOLDER ) );
}
@After
public void afterEachTests() {}
@AfterClass
public static void afterAllTests() {
servletRunner.tearDown();
}
private static void createMockPropertyContext() {
PropertyContext mockPropertyContext = mock( PropertyContext.class );
when( mockPropertyContext.getProperty( PropertyKeys.PRESENTATION_DEFALT_SKIN_NAME.getDefaultKey() )).thenReturn( MockServletRunner.DEFAULT_SKIN_NAME );
when( mockPropertyContext.getProperty( PropertyKeys.PRESENTATION_DEFALT_SKIN_PATH.getDefaultKey() )).thenReturn( MockServletRunner.DEFAULT_SKIN_PATH );
ProcessPuzzleContext applicationContext = servletRunner.getApplicationContext();
when( applicationContext.getPropertyContext() ).thenReturn( mockPropertyContext );
}
}