Search in sources :

Example 6 with QueryParams

use of io.crnk.legacy.queryParams.QueryParams in project crnk-framework by crnk-project.

the class ResourceGetTest method onGivenRequestResourceShouldNotLoadAutoIncludeFields.

@Test
public void onGivenRequestResourceShouldNotLoadAutoIncludeFields() throws Exception {
    // GIVEN
    Document newTaskBody = new Document();
    Resource data = createTask();
    newTaskBody.setData(Nullable.of((Object) data));
    JsonPath taskPath = pathBuilder.build("/tasks");
    ResourcePost resourcePost = new ResourcePost(resourceRegistry, PROPERTIES_PROVIDER, typeParser, objectMapper, documentMapper, new ArrayList<ResourceModificationFilter>());
    // WHEN -- adding a task
    Response taskResponse = resourcePost.handle(taskPath, emptyTaskQuery, null, newTaskBody);
    // THEN
    assertThat(taskResponse.getDocument().getSingleData().get()).isExactlyInstanceOf(Resource.class);
    assertThat(taskResponse.getDocument().getSingleData().get().getType()).isEqualTo("tasks");
    assertThat(taskResponse.getDocument().getSingleData().get().getId()).isNotNull();
    /* ------- */
    // GIVEN
    Document newProjectBody = new Document();
    newProjectBody.setData(Nullable.of((Object) createProject()));
    JsonPath projectPath = pathBuilder.build("/projects");
    // WHEN -- adding a project
    Response projectResponse = resourcePost.handle(projectPath, emptyProjectQuery, null, newProjectBody);
    // THEN
    assertThat(projectResponse.getDocument().getSingleData().get()).isExactlyInstanceOf(Resource.class);
    assertThat(projectResponse.getDocument().getSingleData().get().getType()).isEqualTo("projects");
    assertThat(projectResponse.getDocument().getSingleData().get().getId()).isNotNull();
    assertThat(projectResponse.getDocument().getSingleData().get().getAttributes().get("name").asText()).isEqualTo("sample project");
    /* ------- */
    // GIVEN
    Document newTaskToProjectBody = new Document();
    ResourceIdentifier reldata = new ResourceIdentifier();
    newTaskToProjectBody.setData(Nullable.of((Object) data));
    data.setType("projects");
    data.setId("2");
    JsonPath savedTaskPath = pathBuilder.build("/tasks/" + TASK_ID + "/relationships/project");
    RelationshipsResourcePost sut = new RelationshipsResourcePost(resourceRegistry, typeParser, new ArrayList<ResourceModificationFilter>());
    // WHEN -- adding a relation between task and project
    Response projectRelationshipResponse = sut.handle(savedTaskPath, emptyProjectQuery, null, newTaskToProjectBody);
    assertThat(projectRelationshipResponse).isNotNull();
    // THEN
    TaskToProjectRepository taskToProjectRepository = new TaskToProjectRepository();
    Project project = taskToProjectRepository.findOneTarget(TASK_ID, "project", new QueryParams());
    assertThat(project.getId()).isEqualTo(PROJECT_ID);
    // Given
    JsonPath jsonPath = pathBuilder.build("/tasks/" + TASK_ID);
    ResourceGet responseGetResp = new ResourceGet(resourceRegistry, typeParser, documentMapper);
    Map<String, Set<String>> queryParams = new HashMap<>();
    queryParams.put(RestrictedQueryParamsMembers.include.name() + "[tasks]", Collections.singleton("[\"project\"]"));
    QueryParams requestParams = new QueryParamsBuilder(new DefaultQueryParamsParser()).buildQueryParams(queryParams);
    // WHEN
    Response response = responseGetResp.handle(jsonPath, new QueryParamsAdapter(resourceRegistry.getEntry(Task.class).getResourceInformation(), requestParams, moduleRegistry), null, null);
    // THEN
    Assert.assertNotNull(response);
    assertThat(response.getDocument().getSingleData().get().getType()).isEqualTo("tasks");
    assertThat(taskResponse.getDocument().getSingleData().get().getRelationships().get("project").getData().get()).isNull();
}
Also used : Task(io.crnk.core.mock.models.Task) Resource(io.crnk.core.engine.document.Resource) RelationshipsResourcePost(io.crnk.core.engine.internal.dispatcher.controller.RelationshipsResourcePost) Document(io.crnk.core.engine.document.Document) JsonPath(io.crnk.core.engine.internal.dispatcher.path.JsonPath) ResourcePost(io.crnk.core.engine.internal.dispatcher.controller.ResourcePost) RelationshipsResourcePost(io.crnk.core.engine.internal.dispatcher.controller.RelationshipsResourcePost) DefaultQueryParamsParser(io.crnk.legacy.queryParams.DefaultQueryParamsParser) Response(io.crnk.core.engine.dispatcher.Response) ResourceIdentifier(io.crnk.core.engine.document.ResourceIdentifier) Project(io.crnk.core.mock.models.Project) TaskToProjectRepository(io.crnk.core.mock.repository.TaskToProjectRepository) ResourceGet(io.crnk.core.engine.internal.dispatcher.controller.ResourceGet) QueryParamsBuilder(io.crnk.legacy.queryParams.QueryParamsBuilder) ResourceModificationFilter(io.crnk.core.engine.filter.ResourceModificationFilter) QueryParams(io.crnk.legacy.queryParams.QueryParams) QueryParamsAdapter(io.crnk.legacy.internal.QueryParamsAdapter) BaseControllerTest(io.crnk.core.engine.internal.dispatcher.controller.BaseControllerTest) Test(org.junit.Test)

Example 7 with QueryParams

use of io.crnk.legacy.queryParams.QueryParams in project crnk-framework by crnk-project.

the class FieldResourceGetTest method onGivenIncludeRequestFieldResourcesGetShouldHandleIt.

@Test
@SuppressWarnings({ "rawtypes", "unchecked" })
public void onGivenIncludeRequestFieldResourcesGetShouldHandleIt() throws Exception {
    // get repositories
    ResourceRepositoryAdapter userRepo = resourceRegistry.getEntry(User.class).getResourceRepository(null);
    ResourceRepositoryAdapter projectRepo = resourceRegistry.getEntry(Project.class).getResourceRepository(null);
    ResourceRepositoryAdapter taskRepo = resourceRegistry.getEntry(Task.class).getResourceRepository(null);
    RelationshipRepositoryAdapter relRepositoryUserToProject = resourceRegistry.getEntry(User.class).getRelationshipRepository("assignedProjects", null);
    RelationshipRepositoryAdapter relRepositoryProjectToTask = resourceRegistry.getEntry(Project.class).getRelationshipRepository("tasks", null);
    ResourceInformation userInfo = resourceRegistry.getEntry(User.class).getResourceInformation();
    ResourceInformation projectInfo = resourceRegistry.getEntry(Project.class).getResourceInformation();
    ResourceField includedTaskField = projectInfo.findRelationshipFieldByName("includedTask");
    ResourceField assignedProjectsField = userInfo.findRelationshipFieldByName("assignedProjects");
    // setup test data
    User user = new User();
    user.setId(1L);
    userRepo.create(user, emptyUserQuery);
    Project project = new Project();
    project.setId(2L);
    projectRepo.create(project, emptyProjectQuery);
    Task task = new Task();
    task.setId(3L);
    taskRepo.create(task, emptyTaskQuery);
    relRepositoryUserToProject.setRelations(user, Collections.singletonList(project.getId()), assignedProjectsField, emptyProjectQuery);
    relRepositoryProjectToTask.setRelation(project, task.getId(), includedTaskField, emptyTaskQuery);
    Map<String, Set<String>> params = new HashMap<String, Set<String>>();
    addParams(params, "include[projects]", "includedTask");
    QueryParams queryParams = queryParamsBuilder.buildQueryParams(params);
    QueryAdapter queryAdapter = new QueryParamsAdapter(projectInfo, queryParams, moduleRegistry);
    JsonPath jsonPath = pathBuilder.build("/users/1/assignedProjects");
    FieldResourceGet sut = new FieldResourceGet(resourceRegistry, typeParser, documentMapper);
    Response response = sut.handle(jsonPath, queryAdapter, null, null);
    // THEN
    Assert.assertNotNull(response);
    Assert.assertNotNull(response.getDocument().getData());
    List<Resource> entityList = ((List<Resource>) response.getDocument().getData().get());
    Assert.assertEquals(true, entityList.size() > 0);
    Assert.assertEquals("projects", entityList.get(0).getType());
    Resource returnedProject = entityList.get(0);
    Assert.assertEquals(project.getId().toString(), returnedProject.getId());
    Relationship relationship = returnedProject.getRelationships().get("includedTask");
    Assert.assertNotNull(relationship);
    Assert.assertEquals(task.getId().toString(), relationship.getSingleData().get().getId());
}
Also used : Task(io.crnk.core.mock.models.Task) ResourceInformation(io.crnk.core.engine.information.resource.ResourceInformation) User(io.crnk.core.mock.models.User) FieldResourceGet(io.crnk.core.engine.internal.dispatcher.controller.FieldResourceGet) QueryAdapter(io.crnk.core.engine.query.QueryAdapter) Resource(io.crnk.core.engine.document.Resource) JsonPath(io.crnk.core.engine.internal.dispatcher.path.JsonPath) RelationshipRepositoryAdapter(io.crnk.core.engine.internal.repository.RelationshipRepositoryAdapter) Response(io.crnk.core.engine.dispatcher.Response) Project(io.crnk.core.mock.models.Project) ResourceField(io.crnk.core.engine.information.resource.ResourceField) ResourceRepositoryAdapter(io.crnk.core.engine.internal.repository.ResourceRepositoryAdapter) Relationship(io.crnk.core.engine.document.Relationship) QueryParams(io.crnk.legacy.queryParams.QueryParams) QueryParamsAdapter(io.crnk.legacy.internal.QueryParamsAdapter) BaseControllerTest(io.crnk.core.engine.internal.dispatcher.controller.BaseControllerTest) Test(org.junit.Test)

Example 8 with QueryParams

use of io.crnk.legacy.queryParams.QueryParams in project crnk-framework by crnk-project.

the class CrnkBootTest method boot.

@Test
public void boot() {
    CrnkBoot boot = new CrnkBoot();
    boot.setDefaultServiceUrlProvider(new ServiceUrlProvider() {

        @Override
        public String getUrl() {
            return "http://127.0.0.1";
        }
    });
    boot.setServiceDiscovery(new ReflectionsServiceDiscovery(MockConstants.TEST_MODELS_PACKAGE));
    boot.addModule(new SimpleModule("test"));
    boot.boot();
    RequestDispatcher requestDispatcher = boot.getRequestDispatcher();
    ResourceRegistry resourceRegistry = boot.getResourceRegistry();
    RegistryEntry taskEntry = resourceRegistry.getEntry(Task.class);
    Assert.assertNotEquals(0, taskEntry.getRelationshipEntries().size());
    ResourceRepositoryAdapter<?, ?> repositoryAdapter = taskEntry.getResourceRepository(null);
    Assert.assertNotNull(repositoryAdapter.getResourceRepository());
    JsonApiResponse response = repositoryAdapter.findAll(new QueryParamsAdapter(taskEntry.getResourceInformation(), new QueryParams(), boot.getModuleRegistry()));
    Assert.assertNotNull(response);
    Assert.assertNotNull(requestDispatcher);
    ServiceDiscovery serviceDiscovery = boot.getServiceDiscovery();
    Assert.assertNotNull(serviceDiscovery);
    Assert.assertNotNull(boot.getModuleRegistry());
    Assert.assertNotNull(boot.getExceptionMapperRegistry());
    List<Module> modules = boot.getModuleRegistry().getModules();
    Assert.assertEquals(4, modules.size());
    boot.setDefaultPageLimit(20L);
    boot.setMaxPageLimit(100L);
    Assert.assertEquals(1, boot.getPagingBehaviors().size());
    Assert.assertTrue(boot.getPagingBehaviors().get(0) instanceof OffsetLimitPagingBehavior);
}
Also used : OffsetLimitPagingBehavior(io.crnk.core.queryspec.pagingspec.OffsetLimitPagingBehavior) ConstantServiceUrlProvider(io.crnk.core.engine.url.ConstantServiceUrlProvider) ServiceUrlProvider(io.crnk.core.engine.url.ServiceUrlProvider) ResourceRegistry(io.crnk.core.engine.registry.ResourceRegistry) RegistryEntry(io.crnk.core.engine.registry.RegistryEntry) RequestDispatcher(io.crnk.core.engine.dispatcher.RequestDispatcher) JsonApiResponse(io.crnk.core.repository.response.JsonApiResponse) QueryParams(io.crnk.legacy.queryParams.QueryParams) ReflectionsServiceDiscovery(io.crnk.core.module.discovery.ReflectionsServiceDiscovery) QueryParamsAdapter(io.crnk.legacy.internal.QueryParamsAdapter) SimpleModule(io.crnk.core.module.SimpleModule) Module(io.crnk.core.module.Module) SimpleModule(io.crnk.core.module.SimpleModule) ServiceDiscovery(io.crnk.core.module.discovery.ServiceDiscovery) ReflectionsServiceDiscovery(io.crnk.core.module.discovery.ReflectionsServiceDiscovery) Test(org.junit.Test)

Example 9 with QueryParams

use of io.crnk.legacy.queryParams.QueryParams in project crnk-framework by crnk-project.

the class JpaPartialEntityExposureTest method testCrud.

@Test
public void testCrud() {
    TestEntity test = new TestEntity();
    test.setId(2L);
    test.setStringValue("test");
    testRepo.save(test);
    List<TestEntity> tests = testRepo.findAll(new QueryParams());
    Assert.assertEquals(1, tests.size());
    test = tests.get(0);
    Assert.assertEquals(2L, test.getId().longValue());
    Assert.assertNull(test.getOneRelatedValue());
    Assert.assertNull(test.getEagerRelatedValue());
    Assert.assertTrue(test.getManyRelatedValues().isEmpty());
    testRepo.delete(test.getId());
    tests = testRepo.findAll(new QueryParams());
    Assert.assertEquals(0, tests.size());
}
Also used : TestEntity(io.crnk.jpa.model.TestEntity) QueryParams(io.crnk.legacy.queryParams.QueryParams)

Example 10 with QueryParams

use of io.crnk.legacy.queryParams.QueryParams in project crnk-framework by crnk-project.

the class JpaQueryParamsEndToEndTest method testEmbeddableIds.

@Test
public void testEmbeddableIds() throws InstantiationException, IllegalAccessException {
    ResourceRepositoryStub<TestEmbeddedIdEntity, Serializable> rep = client.getQueryParamsRepository(TestEmbeddedIdEntity.class);
    // add
    TestEmbeddedIdEntity entity = new TestEmbeddedIdEntity();
    entity.setId(new TestIdEmbeddable(13, "test"));
    entity.setLongValue(100L);
    rep.create(entity);
    List<TestEmbeddedIdEntity> list = rep.findAll(new QueryParams());
    Assert.assertEquals(1, list.size());
    TestEmbeddedIdEntity savedEntity = list.get(0);
    Assert.assertNotNull(savedEntity);
    Assert.assertEquals(100L, savedEntity.getLongValue());
    Assert.assertEquals(13, savedEntity.getId().getEmbIntValue().intValue());
    Assert.assertEquals("test", savedEntity.getId().getEmbStringValue());
    // update
    savedEntity.setLongValue(101L);
    rep.save(savedEntity);
    list = rep.findAll(new QueryParams());
    Assert.assertEquals(1, list.size());
    savedEntity = list.get(0);
    Assert.assertEquals(101L, savedEntity.getLongValue());
    // delete
    rep.delete(entity.getId());
    list = rep.findAll(new QueryParams());
    Assert.assertEquals(0, list.size());
}
Also used : Serializable(java.io.Serializable) TestIdEmbeddable(io.crnk.jpa.model.TestIdEmbeddable) QueryParams(io.crnk.legacy.queryParams.QueryParams) TestEmbeddedIdEntity(io.crnk.jpa.model.TestEmbeddedIdEntity) Test(org.junit.Test) AbstractJpaJerseyTest(io.crnk.jpa.AbstractJpaJerseyTest)

Aggregations

QueryParams (io.crnk.legacy.queryParams.QueryParams)46 Test (org.junit.Test)37 QueryParamsAdapter (io.crnk.legacy.internal.QueryParamsAdapter)10 Response (io.crnk.core.engine.dispatcher.Response)9 JsonPath (io.crnk.core.engine.internal.dispatcher.path.JsonPath)9 Document (io.crnk.core.engine.document.Document)7 BaseControllerTest (io.crnk.core.engine.internal.dispatcher.controller.BaseControllerTest)7 Project (io.crnk.core.mock.models.Project)7 AbstractJpaJerseyTest (io.crnk.jpa.AbstractJpaJerseyTest)7 Resource (io.crnk.core.engine.document.Resource)6 TaskToProjectRepository (io.crnk.core.mock.repository.TaskToProjectRepository)6 TestEntity (io.crnk.jpa.model.TestEntity)6 Task (io.crnk.test.mock.models.Task)6 ResourcePost (io.crnk.core.engine.internal.dispatcher.controller.ResourcePost)5 Task (io.crnk.core.mock.models.Task)5 DefaultQueryParamsParser (io.crnk.legacy.queryParams.DefaultQueryParamsParser)5 QueryParamsBuilder (io.crnk.legacy.queryParams.QueryParamsBuilder)5 Relationship (io.crnk.core.engine.document.Relationship)3 ResourceIdentifier (io.crnk.core.engine.document.ResourceIdentifier)3 ResourceModificationFilter (io.crnk.core.engine.filter.ResourceModificationFilter)3