package io.katharsis.dispatcher.controller.resource; import io.katharsis.dispatcher.controller.BaseControllerTest; import io.katharsis.queryParams.QueryParams; import io.katharsis.request.path.JsonPath; import io.katharsis.request.path.ResourcePath; import io.katharsis.resource.include.IncludeLookupSetter; import io.katharsis.resource.registry.ResourceRegistry; import io.katharsis.response.BaseResponseContext; import org.junit.Assert; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; public class FieldResourceGetTest extends BaseControllerTest { private static final String REQUEST_TYPE = "GET"; @Test public void onValidRequestShouldAcceptIt() { // GIVEN JsonPath jsonPath = pathBuilder.buildPath("tasks/1/project"); ResourceRegistry resourceRegistry = mock(ResourceRegistry.class); IncludeLookupSetter includeFieldSetter = mock(IncludeLookupSetter.class); FieldResourceGet sut = new FieldResourceGet(resourceRegistry, typeParser, includeFieldSetter); // WHEN boolean result = sut.isAcceptable(jsonPath, REQUEST_TYPE); // THEN assertThat(result).isTrue(); } @Test public void onRelationshipRequestShouldDenyIt() { // GIVEN JsonPath jsonPath = new ResourcePath("tasks/1/relationships/project"); ResourceRegistry resourceRegistry = mock(ResourceRegistry.class); IncludeLookupSetter includeFieldSetter = mock(IncludeLookupSetter.class); FieldResourceGet sut = new FieldResourceGet(resourceRegistry, typeParser, includeFieldSetter); // WHEN boolean result = sut.isAcceptable(jsonPath, REQUEST_TYPE); // THEN assertThat(result).isFalse(); } @Test public void onNonRelationRequestShouldDenyIt() { // GIVEN JsonPath jsonPath = new ResourcePath("tasks"); ResourceRegistry resourceRegistry = mock(ResourceRegistry.class); IncludeLookupSetter includeFieldSetter = mock(IncludeLookupSetter.class); FieldResourceGet sut = new FieldResourceGet(resourceRegistry, typeParser, includeFieldSetter); // WHEN boolean result = sut.isAcceptable(jsonPath, REQUEST_TYPE); // THEN assertThat(result).isFalse(); } @Test public void onGivenRequestFieldResourceGetShouldHandleIt() throws Exception { // GIVEN JsonPath jsonPath = pathBuilder.buildPath("/tasks/1/project"); FieldResourceGet sut = new FieldResourceGet(resourceRegistry, typeParser, includeFieldSetter); // WHEN BaseResponseContext response = sut.handle(jsonPath, new QueryParams(), null, null); // THEN Assert.assertNotNull(response); } @Test public void onGivenRequestFieldResourcesGetShouldHandleIt() throws Exception { // GIVEN JsonPath jsonPath = pathBuilder.buildPath("/users/1/assignedProjects"); FieldResourceGet sut = new FieldResourceGet(resourceRegistry, typeParser, includeFieldSetter); // WHEN BaseResponseContext response = sut.handle(jsonPath, new QueryParams(), null, null); // THEN Assert.assertNotNull(response); } }