Search in sources :

Example 11 with Query

use of org.molgenis.api.model.Query in project molgenis by molgenis.

the class QueryMapperTest method testMapEqualsNull.

@Test
void testMapEqualsNull() {
    Query query = Query.builder().setItem("test").setOperator(Operator.EQUALS).build();
    Attribute attribute = mock(Attribute.class);
    Repository<Entity> repository = createMockRepository(attribute);
    when(rsqlValueParser.parse(null, attribute)).thenReturn(null);
    assertEquals(new QueryImpl<>(repository).eq("test", null), queryMapper.map(query, repository));
}
Also used : Entity(org.molgenis.data.Entity) QueryImpl(org.molgenis.data.support.QueryImpl) Query(org.molgenis.api.model.Query) Attribute(org.molgenis.data.meta.model.Attribute) Test(org.junit.jupiter.api.Test) AbstractMockitoTest(org.molgenis.test.AbstractMockitoTest)

Example 12 with Query

use of org.molgenis.api.model.Query in project molgenis by molgenis.

the class QueryMapper method map.

private void map(Query query, QueryImpl<? extends Entity> entityQuery, EntityType entityType) {
    Operator operator = query.getOperator();
    switch(operator) {
        case EQUALS:
            entityQuery.eq(query.getItem(), mapValue(query, entityType));
            break;
        case NOT_EQUALS:
            entityQuery.not().eq(query.getItem(), mapValue(query, entityType));
            break;
        case IN:
            entityQuery.in(query.getItem(), (Iterable<?>) mapValue(query, entityType));
            break;
        case NOT_IN:
            entityQuery.not().in(query.getItem(), (Iterable<?>) mapValue(query, entityType));
            break;
        case MATCHES:
            entityQuery.search(query.getItem(), (String) mapValue(query, entityType));
            break;
        case SEARCH_QUERY:
            entityQuery.searchQuery(query.getItem(), (String) mapValue(query, entityType));
            break;
        case CONTAINS:
            entityQuery.like(query.getItem(), (String) mapValue(query, entityType));
            break;
        case LESS_THAN:
            entityQuery.lt(query.getItem(), mapValue(query, entityType));
            break;
        case LESS_THAN_OR_EQUAL_TO:
            entityQuery.le(query.getItem(), mapValue(query, entityType));
            break;
        case GREATER_THAN:
            entityQuery.gt(query.getItem(), mapValue(query, entityType));
            break;
        case GREATER_THAN_OR_EQUAL_TO:
            entityQuery.ge(query.getItem(), mapValue(query, entityType));
            break;
        case AND:
            List<Query> subAndQueries = query.getQueryListValue();
            entityQuery.nest();
            for (Iterator<Query> it = subAndQueries.iterator(); it.hasNext(); ) {
                map(it.next(), entityQuery, entityType);
                if (it.hasNext()) {
                    entityQuery.and();
                }
            }
            entityQuery.unnest();
            break;
        case OR:
            List<Query> subOrQueries = query.getQueryListValue();
            entityQuery.nest();
            for (Iterator<Query> it = subOrQueries.iterator(); it.hasNext(); ) {
                map(it.next(), entityQuery, entityType);
                if (it.hasNext()) {
                    entityQuery.or();
                }
            }
            entityQuery.unnest();
            break;
        default:
            throw new UnexpectedEnumException(operator);
    }
}
Also used : Operator(org.molgenis.api.model.Query.Operator) UnexpectedEnumException(org.molgenis.util.UnexpectedEnumException) Query(org.molgenis.api.model.Query)

Example 13 with Query

use of org.molgenis.api.model.Query in project molgenis by molgenis.

the class MetadataApiControllerTest method testDeleteEntityTypes.

@Test
void testDeleteEntityTypes() {
    Query query = Query.create("id", IN, asList("MyEntityTypeId0", "MyEntityTypeId1"));
    DeleteEntityTypesRequest deleteEntityTypesRequest = new DeleteEntityTypesRequest();
    deleteEntityTypesRequest.setQ(query);
    MetadataDeleteJobExecution jobExecution = mockDeleteJobExecution();
    when(metadataApiService.deleteEntityTypesAsync(query)).thenReturn(jobExecution);
    metadataApiController.deleteEntityTypes(deleteEntityTypesRequest);
    verify(metadataApiService).deleteEntityTypesAsync(query);
}
Also used : Query(org.molgenis.api.model.Query) DeleteEntityTypesRequest(org.molgenis.api.metadata.v3.model.DeleteEntityTypesRequest) MetadataDeleteJobExecution(org.molgenis.api.metadata.v3.job.MetadataDeleteJobExecution) Test(org.junit.jupiter.api.Test) AbstractMockitoTest(org.molgenis.test.AbstractMockitoTest)

Example 14 with Query

use of org.molgenis.api.model.Query in project molgenis by molgenis.

the class MetadataApiControllerTest method testGetAttributes.

@Test
void testGetAttributes() {
    String entityTypeId = "MyEntityTypeId";
    Query query = mock(Query.class);
    Sort sort = mock(Sort.class);
    int size = 1;
    int page = 2;
    ReadAttributesRequest readAttributesRequest = new ReadAttributesRequest();
    readAttributesRequest.setQ(query);
    readAttributesRequest.setSort(sort);
    readAttributesRequest.setSize(size);
    readAttributesRequest.setPage(page);
    Attributes attributes = mock(Attributes.class);
    when(metadataApiService.findAttributes(entityTypeId, query, sort, size, page)).thenReturn(attributes);
    AttributesResponse attributesResponse = mock(AttributesResponse.class);
    when(attributeResponseMapper.toAttributesResponse(attributes, size, page)).thenReturn(attributesResponse);
    assertEquals(attributesResponse, metadataApiController.getAttributes(entityTypeId, readAttributesRequest));
}
Also used : AttributesResponse(org.molgenis.api.metadata.v3.model.AttributesResponse) Query(org.molgenis.api.model.Query) ReadAttributesRequest(org.molgenis.api.metadata.v3.model.ReadAttributesRequest) ServletRequestAttributes(org.springframework.web.context.request.ServletRequestAttributes) Sort(org.molgenis.api.model.Sort) Test(org.junit.jupiter.api.Test) AbstractMockitoTest(org.molgenis.test.AbstractMockitoTest)

Example 15 with Query

use of org.molgenis.api.model.Query in project molgenis by molgenis.

the class MetadataApiServiceImplTest method testDeleteEntityTypesQuery.

@SuppressWarnings("unchecked")
@Test
void testDeleteEntityTypesQuery() {
    String entityTypeId0 = "MyEntityTypeId0";
    String entityTypeId1 = "MyEntityTypeId1";
    Query query = Query.create("id", IN, asList(entityTypeId0, entityTypeId1));
    org.molgenis.data.Query<EntityType> dataServiceQuery = mock(org.molgenis.data.Query.class);
    EntityType entityType0 = mock(EntityType.class);
    EntityType entityType1 = mock(EntityType.class);
    when(dataServiceQuery.findAll()).thenReturn(Stream.of(entityType0, entityType1));
    Repository<EntityType> entityTypeRepository = mock(Repository.class);
    when(metadataService.getRepository(ENTITY_TYPE_META_DATA, EntityType.class)).thenReturn(Optional.of(entityTypeRepository));
    when(queryMapper.map(query, entityTypeRepository)).thenReturn(dataServiceQuery);
    metadataApiService.deleteEntityTypesAsync(query);
    assertAll(() -> verify(metadataApiJobService).scheduleDelete(asList(entityType0, entityType1)));
}
Also used : EntityType(org.molgenis.data.meta.model.EntityType) Query(org.molgenis.api.model.Query) AttributeMetadata(org.molgenis.data.meta.model.AttributeMetadata) Test(org.junit.jupiter.api.Test) AbstractMockitoTest(org.molgenis.test.AbstractMockitoTest)

Aggregations

Query (org.molgenis.api.model.Query)58 Test (org.junit.jupiter.api.Test)52 AbstractMockitoTest (org.molgenis.test.AbstractMockitoTest)52 Entity (org.molgenis.data.Entity)27 Attribute (org.molgenis.data.meta.model.Attribute)22 QueryImpl (org.molgenis.data.support.QueryImpl)22 ComparisonNode (cz.jirutka.rsql.parser.ast.ComparisonNode)17 ComparisonOperator (cz.jirutka.rsql.parser.ast.ComparisonOperator)17 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)16 EntityType (org.molgenis.data.meta.model.EntityType)15 Sort (org.molgenis.api.model.Sort)14 Selection (org.molgenis.api.model.Selection)9 Fetch (org.molgenis.data.Fetch)7 AttributeMetadata (org.molgenis.data.meta.model.AttributeMetadata)5 MethodSource (org.junit.jupiter.params.provider.MethodSource)4 EntitiesResponse (org.molgenis.api.data.v3.model.EntitiesResponse)2 QueryRule (org.molgenis.data.QueryRule)2 AndNode (cz.jirutka.rsql.parser.ast.AndNode)1 OrNode (cz.jirutka.rsql.parser.ast.OrNode)1 Stream (java.util.stream.Stream)1