Search in sources :

Example 1 with RelationshipsResourceGet

use of io.crnk.core.engine.internal.dispatcher.controller.RelationshipsResourceGet in project crnk-framework by crnk-project.

the class RelationshipsResourceGetTest method supportPolymorphicRelationshipTypes.

@Test
public void supportPolymorphicRelationshipTypes() throws JsonProcessingException {
    // GIVEN
    Long projectId = 1L;
    String type = ClassUtils.getAnnotation(ProjectPolymorphic.class, JsonApiResource.class).get().type();
    ProjectPolymorphic projectPolymorphic = new ProjectPolymorphic();
    projectPolymorphic.setId(projectId);
    ProjectPolymorphicToObjectRepository projectPolymorphicToObjectRepository = new ProjectPolymorphicToObjectRepository();
    projectPolymorphicToObjectRepository.setRelation(projectPolymorphic, 42L, "task");
    JsonPath jsonPath = pathBuilder.build("/" + type + "/" + projectId + "/relationships/task");
    RelationshipsResourceGet resourceGet = new RelationshipsResourceGet(resourceRegistry, typeParser, documentMapper);
    // WHEN
    Response baseResponseContext = resourceGet.handle(jsonPath, emptyTaskQuery, null, null);
    // THEN
    Assert.assertNotNull(baseResponseContext);
    String resultJson = objectMapper.writeValueAsString(baseResponseContext.getDocument());
    assertThatJson(resultJson).node("data.id").isStringEqualTo("42");
    assertThatJson(resultJson).node("data.type").isEqualTo("tasks");
    // GIVEN
    projectPolymorphicToObjectRepository.setRelations(projectPolymorphic, Arrays.asList(44L, 45L), "tasks");
    jsonPath = pathBuilder.build("/" + type + "/" + projectId + "/relationships/tasks");
    resourceGet = new RelationshipsResourceGet(resourceRegistry, typeParser, documentMapper);
    // WHEN
    baseResponseContext = resourceGet.handle(jsonPath, emptyTaskQuery, null, null);
    Assert.assertNotNull(baseResponseContext);
    resultJson = objectMapper.writeValueAsString(baseResponseContext.getDocument());
    ReadContext resultCtx = com.jayway.jsonpath.JsonPath.parse(resultJson);
    assertIncludeDoNotCareAboutOrder(new ArrayList<>(Arrays.asList("44", "45")), Arrays.asList(0, 1), resultCtx);
}
Also used : Response(io.crnk.core.engine.dispatcher.Response) ProjectPolymorphic(io.crnk.core.mock.models.ProjectPolymorphic) ReadContext(com.jayway.jsonpath.ReadContext) ProjectPolymorphicToObjectRepository(io.crnk.core.mock.repository.ProjectPolymorphicToObjectRepository) RelationshipsResourceGet(io.crnk.core.engine.internal.dispatcher.controller.RelationshipsResourceGet) JsonPath(io.crnk.core.engine.internal.dispatcher.path.JsonPath) BaseControllerTest(io.crnk.core.engine.internal.dispatcher.controller.BaseControllerTest) Test(org.junit.Test)

Example 2 with RelationshipsResourceGet

use of io.crnk.core.engine.internal.dispatcher.controller.RelationshipsResourceGet in project crnk-framework by crnk-project.

the class RelationshipsResourceGetTest method onValidRequestShouldAcceptIt.

@Test
public void onValidRequestShouldAcceptIt() {
    // GIVEN
    JsonPath jsonPath = pathBuilder.build("tasks/1/relationships/project");
    ResourceRegistry resourceRegistry = mock(ResourceRegistry.class);
    RelationshipsResourceGet sut = new RelationshipsResourceGet(resourceRegistry, typeParser, documentMapper);
    // WHEN
    boolean result = sut.isAcceptable(jsonPath, REQUEST_TYPE);
    // THEN
    assertThat(result).isTrue();
}
Also used : RelationshipsResourceGet(io.crnk.core.engine.internal.dispatcher.controller.RelationshipsResourceGet) ResourceRegistry(io.crnk.core.engine.registry.ResourceRegistry) JsonPath(io.crnk.core.engine.internal.dispatcher.path.JsonPath) BaseControllerTest(io.crnk.core.engine.internal.dispatcher.controller.BaseControllerTest) Test(org.junit.Test)

Example 3 with RelationshipsResourceGet

use of io.crnk.core.engine.internal.dispatcher.controller.RelationshipsResourceGet in project crnk-framework by crnk-project.

the class RelationshipsResourceGetTest method onGivenRequestLinkResourceGetShouldReturnDataField.

@Test
public void onGivenRequestLinkResourceGetShouldReturnDataField() throws Exception {
    // GIVEN
    JsonPath jsonPath = pathBuilder.build("/tasks/1/relationships/project");
    RelationshipsResourceGet sut = new RelationshipsResourceGet(resourceRegistry, typeParser, documentMapper);
    new TaskToProjectRepository().setRelation(new Task().setId(1L), 42L, "project");
    // WHEN
    Response response = sut.handle(jsonPath, emptyProjectQuery, null, null);
    // THEN
    Assert.assertNotNull(response);
    String resultJson = objectMapper.writeValueAsString(response.getDocument());
    assertThatJson(resultJson).node("data.id").isStringEqualTo("42");
    assertThatJson(resultJson).node("data.type").isEqualTo("projects");
}
Also used : Response(io.crnk.core.engine.dispatcher.Response) Task(io.crnk.core.mock.models.Task) TaskToProjectRepository(io.crnk.core.mock.repository.TaskToProjectRepository) RelationshipsResourceGet(io.crnk.core.engine.internal.dispatcher.controller.RelationshipsResourceGet) JsonPath(io.crnk.core.engine.internal.dispatcher.path.JsonPath) BaseControllerTest(io.crnk.core.engine.internal.dispatcher.controller.BaseControllerTest) Test(org.junit.Test)

Example 4 with RelationshipsResourceGet

use of io.crnk.core.engine.internal.dispatcher.controller.RelationshipsResourceGet in project crnk-framework by crnk-project.

the class HttpRequestProcessorImplTest method shouldHandleRelationshipRequest.

@Test
public void shouldHandleRelationshipRequest() throws Exception {
    // GIVEN
    String path = "/tasks/1/relationships/project";
    String requestType = "GET";
    ControllerRegistry controllerRegistry = new ControllerRegistry(null);
    RelationshipsResourceGet controller = mock(RelationshipsResourceGet.class);
    controllerRegistry.addController(controller);
    QuerySpecAdapterBuilder queryAdapterBuilder = new QuerySpecAdapterBuilder(new DefaultQuerySpecDeserializer(), moduleRegistry);
    RequestDispatcher sut = new HttpRequestProcessorImpl(moduleRegistry, controllerRegistry, null, queryAdapterBuilder);
    // WHEN
    when(controller.isAcceptable(any(JsonPath.class), eq(requestType))).thenCallRealMethod();
    Map<String, Set<String>> parameters = new HashMap<>();
    sut.dispatchRequest(path, requestType, parameters, null, null);
    // THEN
    verify(controller, times(1)).handle(any(JsonPath.class), any(QueryAdapter.class), any(RepositoryMethodParameterProvider.class), any(Document.class));
}
Also used : ControllerRegistry(io.crnk.core.engine.internal.dispatcher.ControllerRegistry) QuerySpecAdapterBuilder(io.crnk.core.queryspec.internal.QuerySpecAdapterBuilder) Set(java.util.Set) HashMap(java.util.HashMap) QueryAdapter(io.crnk.core.engine.query.QueryAdapter) DefaultQuerySpecDeserializer(io.crnk.core.queryspec.DefaultQuerySpecDeserializer) RelationshipsResourceGet(io.crnk.core.engine.internal.dispatcher.controller.RelationshipsResourceGet) Matchers.anyString(org.mockito.Matchers.anyString) JsonPath(io.crnk.core.engine.internal.dispatcher.path.JsonPath) Document(io.crnk.core.engine.document.Document) RequestDispatcher(io.crnk.core.engine.dispatcher.RequestDispatcher) HttpRequestProcessorImpl(io.crnk.core.engine.internal.http.HttpRequestProcessorImpl) RepositoryMethodParameterProvider(io.crnk.legacy.internal.RepositoryMethodParameterProvider) ExceptionMapperRegistryTest(io.crnk.core.engine.internal.exception.ExceptionMapperRegistryTest) Test(org.junit.Test)

Example 5 with RelationshipsResourceGet

use of io.crnk.core.engine.internal.dispatcher.controller.RelationshipsResourceGet in project crnk-framework by crnk-project.

the class RelationshipsResourceGetTest method onNonRelationRequestShouldDenyIt.

@Test
public void onNonRelationRequestShouldDenyIt() {
    // GIVEN
    JsonPath jsonPath = new ResourcePath("tasks");
    ResourceRegistry resourceRegistry = mock(ResourceRegistry.class);
    RelationshipsResourceGet sut = new RelationshipsResourceGet(resourceRegistry, typeParser, documentMapper);
    // WHEN
    boolean result = sut.isAcceptable(jsonPath, REQUEST_TYPE);
    // THEN
    assertThat(result).isFalse();
}
Also used : ResourcePath(io.crnk.core.engine.internal.dispatcher.path.ResourcePath) RelationshipsResourceGet(io.crnk.core.engine.internal.dispatcher.controller.RelationshipsResourceGet) ResourceRegistry(io.crnk.core.engine.registry.ResourceRegistry) JsonPath(io.crnk.core.engine.internal.dispatcher.path.JsonPath) BaseControllerTest(io.crnk.core.engine.internal.dispatcher.controller.BaseControllerTest) Test(org.junit.Test)

Aggregations

RelationshipsResourceGet (io.crnk.core.engine.internal.dispatcher.controller.RelationshipsResourceGet)7 JsonPath (io.crnk.core.engine.internal.dispatcher.path.JsonPath)7 Test (org.junit.Test)7 BaseControllerTest (io.crnk.core.engine.internal.dispatcher.controller.BaseControllerTest)6 Response (io.crnk.core.engine.dispatcher.Response)3 ResourceRegistry (io.crnk.core.engine.registry.ResourceRegistry)3 ResourcePath (io.crnk.core.engine.internal.dispatcher.path.ResourcePath)2 ReadContext (com.jayway.jsonpath.ReadContext)1 RequestDispatcher (io.crnk.core.engine.dispatcher.RequestDispatcher)1 Document (io.crnk.core.engine.document.Document)1 ControllerRegistry (io.crnk.core.engine.internal.dispatcher.ControllerRegistry)1 ExceptionMapperRegistryTest (io.crnk.core.engine.internal.exception.ExceptionMapperRegistryTest)1 HttpRequestProcessorImpl (io.crnk.core.engine.internal.http.HttpRequestProcessorImpl)1 QueryAdapter (io.crnk.core.engine.query.QueryAdapter)1 ProjectPolymorphic (io.crnk.core.mock.models.ProjectPolymorphic)1 Task (io.crnk.core.mock.models.Task)1 ProjectPolymorphicToObjectRepository (io.crnk.core.mock.repository.ProjectPolymorphicToObjectRepository)1 TaskToProjectRepository (io.crnk.core.mock.repository.TaskToProjectRepository)1 DefaultQuerySpecDeserializer (io.crnk.core.queryspec.DefaultQuerySpecDeserializer)1 QuerySpecAdapterBuilder (io.crnk.core.queryspec.internal.QuerySpecAdapterBuilder)1