package org.springframework.roo.addon.web.mvc.jsp;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.junit.Test;
import org.springframework.roo.model.JavaType;
/**
* Unit test of {@link JspOperationsImpl}
*
* @author Andrew Swan
* @since 1.2.0
*/
public class JspOperationsImplTest {
/**
* Asserts that the given preferred mapping provided by the user gives rise
* to the expected folder name and mapping to use in the annotation
*
* @param preferredMapping
* @param expectedFolder
* @param expectedMapping
*/
private void assertFolderAndMapping(final String preferredMapping, final String expectedFolder,
final String expectedMapping) {
// Set up
final JavaType mockController = mock(JavaType.class);
when(mockController.getSimpleTypeName()).thenReturn("FooController");
// Invoke
final ImmutablePair<String, String> pair =
JspOperationsImpl.getFolderAndMapping(preferredMapping, mockController);
// Check
assertEquals(expectedFolder, pair.getKey());
assertEquals(expectedMapping, pair.getValue());
}
@Test
public void testGetFolderAndMappingForBlankPreferredMapping() {
assertFolderAndMapping("", "foo", "/foo/**");
}
@Test
public void testGetFolderAndMappingForPreferredMappingWithLeadingSlash() {
assertFolderAndMapping("/foo", "foo", "/foo/**");
}
@Test
public void testGetFolderAndMappingForPreferredMappingWithMixedCase() {
assertFolderAndMapping("fooBar", "fooBar", "/fooBar/**");
}
@Test
public void testGetFolderAndMappingForPreferredMappingWithTrailingSlash() {
assertFolderAndMapping("foo/", "foo", "/foo/**");
}
@Test
public void testGetFolderAndMappingForPreferredMappingWithTrailingWildcard() {
assertFolderAndMapping("foo/**", "foo", "/foo/**");
}
@Test
public void testGetFolderAndMappingForUnadornedPreferredMapping() {
assertFolderAndMapping("foo", "foo", "/foo/**");
}
}