package net.eusashead.bjugquerydsl.hateoas; import static org.mockito.Mockito.*; import javax.servlet.http.HttpServletRequest; import org.junit.Assert; import org.junit.Test; import org.junit.runners.JUnit4; import org.junit.runner.RunWith; import org.springframework.core.MethodParameter; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.web.bind.support.WebDataBinderFactory; import org.springframework.web.context.request.NativeWebRequest; import org.springframework.web.method.support.ModelAndViewContainer; import com.theoryinpractise.halbuilder.DefaultRepresentationFactory; import com.theoryinpractise.halbuilder.api.RepresentationFactory; @RunWith(JUnit4.class) public class HalPageResponseEntityBuilderHandlerMethodArgumentResolverTest { private RepresentationFactory representationFactory = new DefaultRepresentationFactory(); private RepresentationConverter converter = new RepresentationConverterImpl(representationFactory, new SimplePropertyConverterImpl()); @Test public void testSupport() throws Exception { HalPageResponseEntityBuilderHandlerMethodArgumentResolver resolver = new HalPageResponseEntityBuilderHandlerMethodArgumentResolver(representationFactory, converter); MethodParameter parameter = mockMethodParameter(); Assert.assertTrue(resolver.supportsParameter(parameter)); } @Test public void testResolve() throws Exception { HalPageResponseEntityBuilderHandlerMethodArgumentResolver resolver = new HalPageResponseEntityBuilderHandlerMethodArgumentResolver(representationFactory, converter); MethodParameter parameter = mockMethodParameter(); ModelAndViewContainer container = mock(ModelAndViewContainer.class); NativeWebRequest request = mockRequest(); WebDataBinderFactory factory = mock(WebDataBinderFactory.class); Object resolved = resolver.resolveArgument(parameter, container , request , factory); Assert.assertEquals(HalPageResponseEntityBuilder.class, resolved.getClass()); } private NativeWebRequest mockRequest() { MockHttpServletRequest nativeRequest = new MockHttpServletRequest("GET", "http://www.domain.com/path/to/content"); NativeWebRequest request = mock(NativeWebRequest.class); doReturn(nativeRequest).when(request).getNativeRequest(HttpServletRequest.class); return request; } private MethodParameter mockMethodParameter() { MethodParameter parameter = mock(MethodParameter.class); doReturn(HalPageResponseEntityBuilder.class).when(parameter).getParameterType(); return parameter; } }