package org.molgenis.charts.data; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import org.molgenis.data.DataService; import org.molgenis.data.Entity; import org.molgenis.data.QueryRule; import org.molgenis.data.Repository; import org.molgenis.data.meta.model.Attribute; import org.molgenis.data.meta.model.AttributeFactory; import org.molgenis.data.meta.model.EntityType; import org.molgenis.data.meta.model.EntityTypeFactory; import org.molgenis.data.support.DynamicEntity; import org.molgenis.test.data.AbstractMolgenisSpringTest; import org.springframework.beans.factory.annotation.Autowired; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import static com.google.common.collect.Lists.newArrayList; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.molgenis.data.meta.AttributeType.DECIMAL; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; public class ChartDataServiceImplTest extends AbstractMolgenisSpringTest { private ChartDataServiceImpl chartDataService; private DataService dataServiceMock; @Autowired private EntityTypeFactory entityTypeFactory; @Autowired private AttributeFactory attrMetaFactory; @BeforeMethod public void beforeMethod() { dataServiceMock = mock(DataService.class); chartDataService = new ChartDataServiceImpl(dataServiceMock); } @Test public void getDataMatrix() { String entityName = "entity"; List<Entity> entities = new ArrayList<>(); Attribute patientAttr = attrMetaFactory.create().setName("patient"); Attribute probeAttr = attrMetaFactory.create().setName("probe").setDataType(DECIMAL); EntityType entityType = entityTypeFactory.create(); entityType.addAttributes(newArrayList(patientAttr, probeAttr)); Entity e1 = new DynamicEntity(entityType); e1.set("patient", "patient1"); e1.set("probe", 1.5); entities.add(e1); Entity e2 = new DynamicEntity(entityType); e2.set("patient", "patient2"); e2.set("probe", 1.6); entities.add(e2); final Repository<Entity> repo = mock(Repository.class); when(repo.iterator()).thenReturn(entities.iterator()); when(dataServiceMock.getRepository(entityName)).thenAnswer(new Answer<Repository<Entity>>() { @Override public Repository<Entity> answer(InvocationOnMock invocation) throws Throwable { return repo; } }); DataMatrix matrix = chartDataService .getDataMatrix(entityName, Arrays.asList("probe"), "patient", Collections.<QueryRule>emptyList()); assertNotNull(matrix); assertEquals(matrix.getColumnTargets(), Arrays.asList(new Target("probe"))); assertEquals(matrix.getRowTargets(), Arrays.asList(new Target("patient1"), new Target("patient2"))); assertEquals(matrix.getValues(), Arrays.asList(Arrays.asList(1.5), Arrays.asList(1.6))); } }