package org.molgenis.data;
import org.molgenis.data.annotation.core.RepositoryAnnotator;
import org.molgenis.data.annotation.web.AnnotationService;
import org.molgenis.data.annotation.web.AnnotationServiceImpl;
import org.molgenis.data.meta.MetaDataService;
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.vcf.model.VcfAttributes;
import org.molgenis.test.data.AbstractMolgenisSpringTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.context.ContextConfiguration;
import org.testng.annotations.Test;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.testng.Assert.*;
@ContextConfiguration(classes = { AnnotationServiceImplTest.Config.class })
public class AnnotationServiceImplTest extends AbstractMolgenisSpringTest
{
@Autowired
AttributeFactory attributeFactory;
@Autowired
EntityTypeFactory entityTypeFactory;
@Autowired
VcfAttributes vcfAttributes;
@Autowired
private AnnotationServiceImpl annotationService;
@Test
public void getAllAnnotators()
{
assertNotNull(annotationService.getAllAnnotators());
}
@Test
public void getRepositoryByEntityName()
{
assertEquals(annotationService.getAnnotatorByName("annotator1").getSimpleName(), "annotator1");
assertEquals(annotationService.getAnnotatorByName("annotator2").getSimpleName(), "annotator2");
assertEquals(annotationService.getAnnotatorByName("annotator3").getSimpleName(), "annotator3");
}
@Test
public void get()
{
assertEquals(annotationService.getAnnotatorsByMetaData(Config.metaData).size(), 2);
assertTrue(annotationService.getAnnotatorsByMetaData(Config.metaData)
.contains(annotationService.getAnnotatorByName("annotator2")));
assertTrue(annotationService.getAnnotatorsByMetaData(Config.metaData)
.contains(annotationService.getAnnotatorByName("annotator3")));
}
@Configuration
@ComponentScan({ "org.molgenis.data.vcf.model" })
static class Config
{
public static EntityType metaData = mock(EntityType.class);
@Bean
public DataService dataService()
{
return mock(DataService.class);
}
@Bean
public RepositoryAnnotator annotator1()
{
RepositoryAnnotator annotator = mock(RepositoryAnnotator.class);
when(annotator.getSimpleName()).thenReturn("annotator1");
when(annotator.canAnnotate(metaData)).thenReturn("no way, this entity is unsuitable!");
return annotator;
}
@Bean
public RepositoryAnnotator annotator2()
{
RepositoryAnnotator annotator = mock(RepositoryAnnotator.class);
when(annotator.getSimpleName()).thenReturn("annotator2");
when(annotator.canAnnotate(metaData)).thenReturn("true");
return annotator;
}
@Bean
public RepositoryAnnotator annotator3()
{
RepositoryAnnotator annotator = mock(RepositoryAnnotator.class);
when(annotator.getSimpleName()).thenReturn("annotator3");
when(annotator.canAnnotate(metaData)).thenReturn("true");
return annotator;
}
@Bean
public AnnotationService annotationService()
{
return new AnnotationServiceImpl();
}
@Bean
public MetaDataService metaDataService()
{
return mock(MetaDataService.class);
}
}
}