Search in sources :

Example 36 with Query

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

the class QueryRsqlVisitorTest method testVisitComparisonNodeSearchQuery.

@Test
void testVisitComparisonNodeSearchQuery() {
    String selector = "name";
    String argument = "piet";
    ComparisonOperator operator = new ComparisonOperator("=sq=");
    ComparisonNode node = new ComparisonNode(operator, selector, singletonList(argument));
    Query query = Query.builder().setItem(selector).setOperator(SEARCH_QUERY).setValue(argument).build();
    assertEquals(query, queryRsqlVisitor.visit(node));
}
Also used : ComparisonOperator(cz.jirutka.rsql.parser.ast.ComparisonOperator) ComparisonNode(cz.jirutka.rsql.parser.ast.ComparisonNode) Query(org.molgenis.api.model.Query) Test(org.junit.jupiter.api.Test) AbstractMockitoTest(org.molgenis.test.AbstractMockitoTest) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 37 with Query

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

the class QueryRsqlVisitorTest method testVisitComparisonNodeLessThanOrEqual.

@ParameterizedTest
@MethodSource("testVisitComparisonNodeLessThanOrEqualProvider")
void testVisitComparisonNodeLessThanOrEqual(String symbol) {
    String selector = "age";
    String argument = "87";
    ComparisonOperator operator = new ComparisonOperator(symbol);
    ComparisonNode node = new ComparisonNode(operator, selector, singletonList(argument));
    Query query = Query.builder().setItem(selector).setOperator(LESS_THAN_OR_EQUAL_TO).setValue(argument).build();
    assertEquals(query, queryRsqlVisitor.visit(node));
}
Also used : ComparisonOperator(cz.jirutka.rsql.parser.ast.ComparisonOperator) ComparisonNode(cz.jirutka.rsql.parser.ast.ComparisonNode) Query(org.molgenis.api.model.Query) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) MethodSource(org.junit.jupiter.params.provider.MethodSource)

Example 38 with Query

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

the class QueryRsqlVisitorTest method testVisitAndNode.

@Test
void testVisitAndNode() {
    String argument0 = "piet";
    ComparisonOperator operator0 = new ComparisonOperator("=q=");
    ComparisonNode node0 = new ComparisonNode(operator0, "*", singletonList(argument0));
    String argument1 = "jan";
    ComparisonOperator operator1 = new ComparisonOperator("=q=");
    ComparisonNode node1 = new ComparisonNode(operator1, "*", singletonList(argument1));
    AndNode andNode = new AndNode(asList(node0, node1));
    Query query = Query.builder().setOperator(AND).setValue(asList(Query.builder().setOperator(MATCHES).setValue(argument0).build(), Query.builder().setOperator(MATCHES).setValue(argument1).build())).build();
    assertEquals(query, queryRsqlVisitor.visit(andNode));
}
Also used : ComparisonOperator(cz.jirutka.rsql.parser.ast.ComparisonOperator) ComparisonNode(cz.jirutka.rsql.parser.ast.ComparisonNode) Query(org.molgenis.api.model.Query) AndNode(cz.jirutka.rsql.parser.ast.AndNode) Test(org.junit.jupiter.api.Test) AbstractMockitoTest(org.molgenis.test.AbstractMockitoTest) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 39 with Query

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

the class DataServiceV3ImplTest method testFindField.

@SuppressWarnings("unchecked")
@Test
void testFindField() {
    String entityTypeId = "MyEntityType";
    String refEntityTypeId = "refEntityType";
    String entityId = "MyEntity";
    String fieldId = "MyField";
    Selection filter = Selection.FULL_SELECTION;
    Selection expand = Selection.EMPTY_SELECTION;
    Attribute refIdAttribute = mock(Attribute.class, "mrefId");
    when(refIdAttribute.getName()).thenReturn("id");
    EntityType refEntityType = mock(EntityType.class, "refEntityType");
    when(refEntityType.getId()).thenReturn(refEntityTypeId);
    when(refEntityType.getIdAttribute()).thenReturn(refIdAttribute);
    Attribute idAttribute = mock(Attribute.class, "id");
    when(idAttribute.getDataType()).thenReturn(STRING);
    Attribute mrefAttribute = mock(Attribute.class, "mref");
    when(mrefAttribute.getName()).thenReturn("MyField");
    when(mrefAttribute.getDataType()).thenReturn(MREF);
    when(mrefAttribute.getRefEntity()).thenReturn(refEntityType);
    EntityType entityType = mock(EntityType.class, "entityType");
    when(entityType.getIdAttribute()).thenReturn(idAttribute);
    when(entityType.getAttribute(fieldId)).thenReturn(mrefAttribute);
    Repository<Entity> repository = mock(Repository.class);
    when(repository.getEntityType()).thenReturn(entityType);
    Fetch fetch = new Fetch().field("MyField", new Fetch().field("id"));
    Entity entity = mock(Entity.class);
    doReturn(entity).when(repository).findOneById(entityId, fetch);
    Repository<Entity> refRepository = mock(Repository.class);
    when(refRepository.getEntityType()).thenReturn(refEntityType);
    Entity entity1 = mock(Entity.class);
    doReturn("entity1").when(entity1).getIdValue();
    Entity entity2 = mock(Entity.class);
    doReturn("entity2").when(entity2).getIdValue();
    Entity entity3 = mock(Entity.class);
    doReturn("entity3").when(entity3).getIdValue();
    doReturn(Arrays.asList(entity1, entity2, entity3)).when(entity).getEntities("MyField");
    Sort sort = Sort.create("field", Direction.ASC);
    Query q = Query.builder().setOperator(Operator.MATCHES).setValue("value").build();
    org.molgenis.data.Query<Entity> findAllQuery = mock(org.molgenis.data.Query.class);
    org.molgenis.data.Sort dataSort = mock(org.molgenis.data.Sort.class);
    org.molgenis.data.Query<Entity> findQuery = new QueryImpl<>(findAllQuery);
    findQuery.in("id", Arrays.asList("entity1", "entity2", "entity3"));
    findQuery.fetch(fetch);
    findQuery.offset(10);
    findQuery.pageSize(10);
    findQuery.sort(dataSort);
    org.molgenis.data.Query<Entity> countQuery = new QueryImpl<>(findAllQuery);
    countQuery.offset(0);
    countQuery.pageSize(Integer.MAX_VALUE);
    when(queryMapper.map(q, refRepository)).thenReturn(findAllQuery).thenReturn(countQuery);
    countQuery.in("id", Arrays.asList("entity1", "entity2", "entity3"));
    when(refRepository.count(countQuery)).thenReturn(100L);
    when(refRepository.findAll(findQuery)).thenReturn(Stream.of(entity1, entity2));
    when(sortMapper.map(sort, refEntityType)).thenReturn(dataSort);
    doReturn(Optional.of(repository)).when(metaDataService).getRepository(entityTypeId);
    doReturn(Optional.of(refRepository)).when(metaDataService).getRepository(refEntityTypeId);
    Entities actual = dataServiceV3Impl.findSubresources(entityTypeId, entityId, fieldId, q, filter, expand, sort, 10, 1);
    assertEquals(actual, Entities.builder().setEntities(asList(entity1, entity2)).setTotal(100).build());
}
Also used : Entity(org.molgenis.data.Entity) Query(org.molgenis.api.model.Query) Attribute(org.molgenis.data.meta.model.Attribute) Selection(org.molgenis.api.model.Selection) EntityType(org.molgenis.data.meta.model.EntityType) Fetch(org.molgenis.data.Fetch) QueryImpl(org.molgenis.data.support.QueryImpl) Sort(org.molgenis.api.model.Sort) Test(org.junit.jupiter.api.Test) AbstractMockitoTest(org.molgenis.test.AbstractMockitoTest)

Example 40 with Query

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

the class DataServiceV3ImplTest method testFindFieldWithQuery.

@SuppressWarnings("unchecked")
@Test
void testFindFieldWithQuery() {
    String entityTypeId = "MyEntityType";
    String refEntityTypeId = "refEntityType";
    String entityId = "MyEntity";
    String fieldId = "MyField";
    Selection filter = Selection.FULL_SELECTION;
    Selection expand = Selection.EMPTY_SELECTION;
    Attribute refIdAttribute = mock(Attribute.class, "mrefId");
    when(refIdAttribute.getName()).thenReturn("id");
    EntityType refEntityType = mock(EntityType.class, "refEntityType");
    when(refEntityType.getId()).thenReturn(refEntityTypeId);
    when(refEntityType.getIdAttribute()).thenReturn(refIdAttribute);
    Attribute idAttribute = mock(Attribute.class, "id");
    when(idAttribute.getDataType()).thenReturn(STRING);
    Attribute mrefAttribute = mock(Attribute.class, "mref");
    when(mrefAttribute.getName()).thenReturn("MyField");
    when(mrefAttribute.getDataType()).thenReturn(MREF);
    when(mrefAttribute.getRefEntity()).thenReturn(refEntityType);
    EntityType entityType = mock(EntityType.class, "entityType");
    when(entityType.getIdAttribute()).thenReturn(idAttribute);
    when(entityType.getAttribute(fieldId)).thenReturn(mrefAttribute);
    Repository<Entity> repository = mock(Repository.class);
    when(repository.getEntityType()).thenReturn(entityType);
    Fetch fetch = new Fetch().field("MyField", new Fetch().field("id"));
    Entity entity = mock(Entity.class);
    doReturn(entity).when(repository).findOneById(entityId, fetch);
    Repository<Entity> refRepository = mock(Repository.class);
    when(refRepository.getEntityType()).thenReturn(refEntityType);
    Entity entity1 = mock(Entity.class);
    doReturn("entity1").when(entity1).getIdValue();
    Entity entity2 = mock(Entity.class);
    doReturn("entity2").when(entity2).getIdValue();
    Entity entity3 = mock(Entity.class);
    doReturn("entity3").when(entity3).getIdValue();
    doReturn(Arrays.asList(entity1, entity2, entity3)).when(entity).getEntities("MyField");
    Sort sort = Sort.create("field", Direction.ASC);
    Query q = Query.builder().setOperator(Operator.MATCHES).setValue("value").build();
    org.molgenis.data.Query<Entity> findAllQuery = new QueryImpl<>();
    findAllQuery.eq("field1", "value1").or().eq("field2", "value2");
    org.molgenis.data.Sort dataSort = mock(org.molgenis.data.Sort.class);
    org.molgenis.data.Query<Entity> findQuery = new QueryImpl<>();
    findQuery.nest().eq("field1", "value1").or().eq("field2", "value2").unnest().and();
    findQuery.in("id", Arrays.asList("entity1", "entity2", "entity3"));
    findQuery.fetch(fetch);
    findQuery.offset(10);
    findQuery.pageSize(10);
    findQuery.sort(dataSort);
    org.molgenis.data.Query<Entity> countQuery = new QueryImpl<>();
    countQuery.nest().eq("field1", "value1").or().eq("field2", "value2").unnest().and();
    countQuery.offset(0);
    countQuery.pageSize(Integer.MAX_VALUE);
    when(queryMapper.map(q, refRepository)).thenReturn(findAllQuery).thenReturn(countQuery);
    countQuery.in("id", Arrays.asList("entity1", "entity2", "entity3"));
    when(refRepository.count(countQuery)).thenReturn(100L);
    when(refRepository.findAll(findQuery)).thenReturn(Stream.of(entity1, entity2));
    when(sortMapper.map(sort, refEntityType)).thenReturn(dataSort);
    doReturn(Optional.of(repository)).when(metaDataService).getRepository(entityTypeId);
    doReturn(Optional.of(refRepository)).when(metaDataService).getRepository(refEntityTypeId);
    Entities actual = dataServiceV3Impl.findSubresources(entityTypeId, entityId, fieldId, q, filter, expand, sort, 10, 1);
    assertEquals(actual, Entities.builder().setEntities(asList(entity1, entity2)).setTotal(100).build());
}
Also used : Entity(org.molgenis.data.Entity) Query(org.molgenis.api.model.Query) Attribute(org.molgenis.data.meta.model.Attribute) Selection(org.molgenis.api.model.Selection) EntityType(org.molgenis.data.meta.model.EntityType) Fetch(org.molgenis.data.Fetch) QueryImpl(org.molgenis.data.support.QueryImpl) Sort(org.molgenis.api.model.Sort) 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