package org.molgenis.data.elasticsearch.config; import com.google.common.io.Files; import org.apache.commons.io.FileUtils; import org.molgenis.data.EntityManager; import org.molgenis.data.elasticsearch.ElasticsearchEntityFactory; import org.molgenis.data.elasticsearch.ElasticsearchService; import org.molgenis.data.elasticsearch.SearchService; import org.molgenis.data.elasticsearch.converter.SourceToEntityConverter; import org.molgenis.data.elasticsearch.factory.EmbeddedElasticSearchServiceFactory; import org.molgenis.data.index.IndexActionRegisterService; import org.molgenis.data.index.IndexActionRegisterServiceImpl; import org.molgenis.data.jobs.JobExecutionUpdater; import org.molgenis.data.support.DataServiceImpl; import org.molgenis.data.transaction.MolgenisTransactionManager; import org.molgenis.security.user.UserService; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.mail.MailSender; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.io.File; import java.io.IOException; import static org.mockito.Mockito.mock; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; public class EmbeddedElasticSearchConfigTest { private AnnotationConfigApplicationContext context; private File molgenisHomeDir; @BeforeMethod public void beforeMethod() { molgenisHomeDir = Files.createTempDir(); molgenisHomeDir.deleteOnExit(); System.setProperty("molgenis.home", molgenisHomeDir.getAbsolutePath()); context = new AnnotationConfigApplicationContext(DataServiceImpl.class, EmbeddedElasticSearchConfig.class, ElasticsearchEntityFactory.class, Config.class); } @AfterMethod public void tearDownAfterMethod() throws IOException { context.destroy(); FileUtils.deleteDirectory(molgenisHomeDir); } @Configuration public static class Config { @Bean public EntityManager entityManager() { return mock(EntityManager.class); } @Bean public SourceToEntityConverter sourceToEntityConverter() { return mock(SourceToEntityConverter.class); } @Bean public MolgenisTransactionManager molgenisTransactionManager() { return mock(MolgenisTransactionManager.class); } @Bean public JobExecutionUpdater jobExecutionUpdater() { return mock(JobExecutionUpdater.class); } @Bean public MailSender mailSender() { return mock(MailSender.class); } @Bean public UserService molgenisUserService() { return mock(UserService.class); } @Bean public IndexActionRegisterService indexActionRegisterService() { return mock(IndexActionRegisterServiceImpl.class); } } @Test public void embeddedElasticSearchServiceFactory() { EmbeddedElasticSearchServiceFactory factory = context.getBean(EmbeddedElasticSearchServiceFactory.class); assertNotNull(factory); } @Test public void searchService() { SearchService searchService = context.getBean(SearchService.class); assertNotNull(searchService); assertTrue(searchService instanceof ElasticsearchService); } }