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));
}
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));
}
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));
}
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());
}
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());
}
Aggregations