DATAES-675 - Migrate tests to JUnit5.

Original PR: #338
This commit is contained in:
Peter-Josef Meisch 2019-10-28 21:24:08 +01:00 committed by GitHub
parent c50af32fc3
commit c46a6f4c64
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 178 additions and 320 deletions

View File

@ -264,6 +264,14 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>${mockito}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>

View File

@ -18,8 +18,6 @@ package org.springframework.data.elasticsearch.client.reactive;
import static org.assertj.core.api.Assertions.*;
import lombok.SneakyThrows;
import org.junit.ClassRule;
import org.springframework.data.elasticsearch.junit.junit4.TestNodeResource;
import reactor.test.StepVerifier;
import java.io.IOException;
@ -50,33 +48,27 @@ import org.elasticsearch.index.reindex.BulkByScrollResponse;
import org.elasticsearch.index.reindex.DeleteByQueryRequest;
import org.elasticsearch.rest.RestStatus;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.data.elasticsearch.junit.junit4.ElasticsearchVersion;
import org.springframework.data.elasticsearch.junit.junit4.ElasticsearchVersionRule;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.data.elasticsearch.TestUtils;
import org.springframework.data.elasticsearch.client.ClientConfiguration;
import org.springframework.data.elasticsearch.junit.junit4.ElasticsearchVersion;
import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchRestTemplateConfiguration;
import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest;
import org.springframework.http.HttpHeaders;
import org.springframework.lang.Nullable;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
/**
* @author Christoph Strobl
* @author Mark Paluch
* @author Peter-Josef Meisch
*/
@RunWith(SpringRunner.class)
@SpringIntegrationTest
@ContextConfiguration(classes = { ElasticsearchRestTemplateConfiguration.class })
public class ReactiveElasticsearchClientTests {
@ClassRule
public static TestNodeResource testNodeResource = new TestNodeResource();
public @Rule ElasticsearchVersionRule elasticsearchVersion = ElasticsearchVersionRule.any();
static final String INDEX_I = "idx-1-reactive-client-tests";
static final String INDEX_II = "idx-2-reactive-client-tests";
@ -99,7 +91,7 @@ public class ReactiveElasticsearchClientTests {
DOC_SOURCE = Collections.unmodifiableMap(source);
}
@Before
@BeforeEach
public void setUp() {
syncClient = TestUtils.restHighLevelClient();
@ -108,7 +100,7 @@ public class ReactiveElasticsearchClientTests {
TestUtils.deleteIndex(INDEX_I, INDEX_II);
}
@After
@AfterEach
public void after() throws IOException {
TestUtils.deleteIndex(INDEX_I, INDEX_II);

View File

@ -23,7 +23,7 @@ import java.util.Collections;
import org.apache.commons.lang.ClassUtils;
import org.elasticsearch.client.RestHighLevelClient;
import org.junit.Test;
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.AbstractApplicationContext;

View File

@ -19,8 +19,8 @@ import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import org.elasticsearch.client.RestHighLevelClient;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.annotation.Id;
@ -29,14 +29,14 @@ import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfig
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.junit.jupiter.SpringExtension;
/**
* Tests for {@link AbstractElasticsearchConfiguration}.
*
* @author Peter-Josef Meisch
*/
@RunWith(SpringRunner.class)
@ExtendWith(SpringExtension.class)
@ContextConfiguration
public class ElasticsearchConfigurationTests {

View File

@ -24,47 +24,36 @@ import lombok.Data;
import java.lang.Double;
import java.lang.Long;
import org.elasticsearch.node.NodeValidationException;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Version;
import org.springframework.data.elasticsearch.Utils;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.Score;
import org.springframework.data.elasticsearch.annotations.ScriptedField;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchTemplateConfiguration;
import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest;
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
import org.springframework.data.repository.Repository;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
/**
* @author Kevin Leturc
* @author Peter-Josef Meisch
*/
@RunWith(SpringRunner.class)
@ContextConfiguration
@SpringIntegrationTest
@ContextConfiguration(classes = { EnableNestedElasticsearchRepositoriesTests.Config.class })
public class EnableNestedElasticsearchRepositoriesTests {
@Configuration
@Import({ ElasticsearchTemplateConfiguration.class })
@EnableElasticsearchRepositories(basePackages = { "org.springframework.data.elasticsearch.config.nested" },
considerNestedRepositories = true)
static class Config {
@Bean
public ElasticsearchOperations elasticsearchTemplate() throws NodeValidationException {
return new ElasticsearchTemplate(Utils.getNodeClient());
}
}
static class Config {}
@Autowired(required = false) private SampleRepository nestedRepository;

View File

@ -24,34 +24,30 @@ import java.lang.Double;
import java.lang.Long;
import java.util.UUID;
import org.elasticsearch.node.NodeValidationException;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Version;
import org.springframework.data.elasticsearch.Utils;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
import org.springframework.data.elasticsearch.annotations.Score;
import org.springframework.data.elasticsearch.annotations.ScriptedField;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchTemplateConfiguration;
import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
import org.springframework.data.elasticsearch.utils.IndexInitializer;
import org.springframework.data.repository.Repository;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
/**
* @author Rizwan Idrees
@ -60,8 +56,8 @@ import org.springframework.test.context.junit4.SpringRunner;
* @author Gad Akuka
* @author Peter-Josef Meisch
*/
@RunWith(SpringRunner.class)
@ContextConfiguration
@SpringIntegrationTest
@ContextConfiguration(classes = { EnableElasticsearchRepositoriesTests.Config.class })
public class EnableElasticsearchRepositoriesTests implements ApplicationContextAware {
ApplicationContext context;
@ -73,15 +69,9 @@ public class EnableElasticsearchRepositoriesTests implements ApplicationContextA
}
@Configuration
@Import({ ElasticsearchTemplateConfiguration.class })
@EnableElasticsearchRepositories(basePackages = { "org.springframework.data.elasticsearch.config.notnested" })
static class Config {
@Bean
public ElasticsearchOperations elasticsearchTemplate() throws NodeValidationException {
return new ElasticsearchTemplate(Utils.getNodeClient());
}
}
static class Config {}
@Autowired ElasticsearchTemplate elasticsearchTemplate;
@ -91,7 +81,7 @@ public class EnableElasticsearchRepositoriesTests implements ApplicationContextA
interface SampleRepository extends Repository<EnableElasticsearchRepositoriesTests.SampleEntity, Long> {}
@Before
@BeforeEach
public void before() {
IndexInitializer.init(elasticsearchTemplate, SampleEntity.class);
}

View File

@ -40,11 +40,9 @@ import java.util.stream.Collectors;
import java.util.stream.IntStream;
import org.elasticsearch.ElasticsearchStatusException;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.dao.DataAccessResourceFailureException;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Version;
@ -63,9 +61,9 @@ import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilde
import org.springframework.data.elasticsearch.core.query.SearchQuery;
import org.springframework.data.elasticsearch.core.query.StringQuery;
import org.springframework.data.elasticsearch.junit.junit4.ElasticsearchVersion;
import org.springframework.data.elasticsearch.junit.junit4.ElasticsearchVersionRule;
import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchRestTemplateConfiguration;
import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.util.StringUtils;
/**
@ -76,21 +74,18 @@ import org.springframework.util.StringUtils;
* @author Peter-Josef Meisch
* @author Farid Azaza
* @author Martin Choraine
* @currentRead Golden Fool - Robin Hobb
*/
@RunWith(SpringRunner.class)
@ContextConfiguration("classpath:infrastructure.xml")
@SpringIntegrationTest
@ContextConfiguration(classes = { ElasticsearchRestTemplateConfiguration.class })
public class ReactiveElasticsearchTemplateTests {
public @Rule ElasticsearchVersionRule elasticsearchVersion = ElasticsearchVersionRule.any();
static final String DEFAULT_INDEX = "reactive-template-test-index";
static final String ALTERNATE_INDEX = "reactive-template-tests-alternate-index";
private ElasticsearchRestTemplate restTemplate;
private ReactiveElasticsearchTemplate template;
@Before
@BeforeEach
public void setUp() {
deleteIndices();
@ -103,7 +98,7 @@ public class ReactiveElasticsearchTemplateTests {
template = new ReactiveElasticsearchTemplate(TestUtils.reactiveClient(), restTemplate.getElasticsearchConverter());
}
@After
@AfterEach
public void tearDown() {
deleteIndices();
}
@ -195,9 +190,10 @@ public class ReactiveElasticsearchTemplateTests {
}).verifyComplete();
}
@Test(expected = IllegalArgumentException.class) // DATAES-504
@Test // DATAES-504
public void insertShouldErrorOnNullEntity() {
template.save(null);
assertThatThrownBy(() -> template.save(null)).isInstanceOf(IllegalArgumentException.class);
}
@Test // DATAES-519
@ -247,9 +243,9 @@ public class ReactiveElasticsearchTemplateTests {
.verifyComplete();
}
@Test(expected = IllegalArgumentException.class) // DATAES-504
@Test // DATAES-504
public void findByIdShouldErrorForNullId() {
template.findById(null, SampleEntity.class);
assertThatThrownBy(() -> template.findById(null, SampleEntity.class)).isInstanceOf(IllegalArgumentException.class);
}
@Test // DATAES-504

View File

@ -40,14 +40,12 @@ import org.elasticsearch.action.support.IndicesOptions;
import org.elasticsearch.action.support.WriteRequest.RefreshPolicy;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.reindex.DeleteByQueryRequest;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Version;
import org.springframework.data.domain.PageRequest;
@ -63,18 +61,15 @@ import org.springframework.data.elasticsearch.core.query.StringQuery;
/**
* @author Christoph Strobl
* @currentRead Fool's Fate - Robin Hobb
* @author Peter-Josef Meisch
*/
@ExtendWith(MockitoExtension.class)
public class ReactiveElasticsearchTemplateUnitTests {
@Rule //
public MockitoRule rule = MockitoJUnit.rule();
@Mock ReactiveElasticsearchClient client;
ReactiveElasticsearchTemplate template;
@Before
@BeforeEach
public void setUp() {
template = new ReactiveElasticsearchTemplate(client);

View File

@ -19,8 +19,7 @@ import static org.assertj.core.api.Assertions.*;
import java.util.Arrays;
import org.junit.Test;
import org.junit.jupiter.api.Test;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.elasticsearch.core.aggregation.impl.AggregatedPageImpl;

View File

@ -30,11 +30,9 @@ import java.util.List;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.search.aggregations.Aggregations;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
@ -46,9 +44,10 @@ import org.springframework.data.elasticsearch.core.ResultsExtractor;
import org.springframework.data.elasticsearch.core.query.IndexQuery;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.data.elasticsearch.core.query.SearchQuery;
import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchTemplateConfiguration;
import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest;
import org.springframework.data.elasticsearch.utils.IndexInitializer;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
/**
* @author Rizwan Idrees
@ -57,8 +56,8 @@ import org.springframework.test.context.junit4.SpringRunner;
* @author Artur Konczak
* @author Peter-Josef Meisch
*/
@RunWith(SpringRunner.class)
@ContextConfiguration("classpath:elasticsearch-template-test.xml")
@SpringIntegrationTest
@ContextConfiguration(classes = { ElasticsearchTemplateConfiguration.class })
public class ElasticsearchTemplateAggregationTests {
static final String RIZWAN_IDREES = "Rizwan Idrees";
@ -72,7 +71,7 @@ public class ElasticsearchTemplateAggregationTests {
@Autowired private ElasticsearchTemplate elasticsearchTemplate;
@Before
@BeforeEach
public void before() {
IndexInitializer.init(elasticsearchTemplate, ArticleEntity.class);
@ -97,7 +96,7 @@ public class ElasticsearchTemplateAggregationTests {
elasticsearchTemplate.refresh(ArticleEntity.class);
}
@After
@AfterEach
public void after() {
elasticsearchTemplate.deleteIndex(ArticleEntity.class);

View File

@ -26,17 +26,17 @@ import org.elasticsearch.search.suggest.SuggestBuilder;
import org.elasticsearch.search.suggest.SuggestBuilders;
import org.elasticsearch.search.suggest.SuggestionBuilder;
import org.elasticsearch.search.suggest.completion.CompletionSuggestion;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.CompletionField;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.data.elasticsearch.core.query.IndexQuery;
import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchTemplateConfiguration;
import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest;
import org.springframework.data.elasticsearch.utils.IndexInitializer;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
/**
* @author Rizwan Idrees
@ -46,8 +46,8 @@ import org.springframework.test.context.junit4.SpringRunner;
* @author Mewes Kochheim
* @author Peter-Josef Meisch
*/
@RunWith(SpringRunner.class)
@ContextConfiguration("classpath:elasticsearch-template-test.xml")
@SpringIntegrationTest
@ContextConfiguration(classes = { ElasticsearchTemplateConfiguration.class })
public class ElasticsearchTemplateCompletionTests {
@Autowired private ElasticsearchTemplate elasticsearchTemplate;

View File

@ -33,8 +33,7 @@ import org.elasticsearch.search.suggest.completion.CompletionSuggestion;
import org.elasticsearch.search.suggest.completion.CompletionSuggestionBuilder;
import org.elasticsearch.search.suggest.completion.context.CategoryQueryContext;
import org.elasticsearch.search.suggest.completion.context.ContextMapping;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.CompletionContext;
@ -42,16 +41,17 @@ import org.springframework.data.elasticsearch.annotations.CompletionField;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.data.elasticsearch.core.query.IndexQuery;
import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchTemplateConfiguration;
import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest;
import org.springframework.data.elasticsearch.utils.IndexInitializer;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
/**
* @author Robert Gruendler
* @author Peter-Josef Meisch
*/
@RunWith(SpringRunner.class)
@ContextConfiguration("classpath:elasticsearch-template-test.xml")
@SpringIntegrationTest
@ContextConfiguration(classes = { ElasticsearchTemplateConfiguration.class })
public class ElasticsearchTemplateCompletionWithContextsTests {
@Autowired private ElasticsearchTemplate elasticsearchTemplate;

View File

@ -24,10 +24,8 @@ import lombok.Data;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
@ -53,9 +51,10 @@ import org.springframework.data.elasticsearch.core.facet.result.TermResult;
import org.springframework.data.elasticsearch.core.query.IndexQuery;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.data.elasticsearch.core.query.SearchQuery;
import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchTemplateConfiguration;
import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest;
import org.springframework.data.elasticsearch.utils.IndexInitializer;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
/**
* @author Rizwan Idrees
@ -64,8 +63,8 @@ import org.springframework.test.context.junit4.SpringRunner;
* @author Artur Konczak
* @author Peter-Josef Meisch
*/
@RunWith(SpringRunner.class)
@ContextConfiguration("classpath:elasticsearch-template-test.xml")
@SpringIntegrationTest
@ContextConfiguration(classes = { ElasticsearchTemplateConfiguration.class })
public class ElasticsearchTemplateFacetTests {
private static final String RIZWAN_IDREES = "Rizwan Idrees";
@ -79,7 +78,7 @@ public class ElasticsearchTemplateFacetTests {
@Autowired private ElasticsearchTemplate elasticsearchTemplate;
@Before
@BeforeEach
public void before() {
IndexInitializer.init(elasticsearchTemplate, ArticleEntity.class);
@ -342,56 +341,17 @@ public class ElasticsearchTemplateFacetTests {
assertThat(facet.getMissing()).isEqualTo(0);
}
@Test(expected = IllegalArgumentException.class)
@Test
public void shouldThrowExeptionsForMultiFieldFacet() {
// given
String facetName = "fyears";
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
.withFacet(
new TermFacetRequestBuilder(facetName).fields("publishedYears", "authors.untouched").ascTerm().build())
.build();
// when
FacetedPage<ArticleEntity> result = elasticsearchTemplate.queryForPage(searchQuery, ArticleEntity.class);
// then
assertThat(result.getNumberOfElements()).isEqualTo(4);
TermResult facet = (TermResult) result.getFacet(facetName);
assertThat(facet.getTerms()).hasSize(7);
Term term = facet.getTerms().get(0);
assertThat(term.getTerm()).isEqualTo(Long.toString(YEAR_2000));
assertThat(term.getCount()).isEqualTo(3);
term = facet.getTerms().get(1);
assertThat(term.getTerm()).isEqualTo(Long.toString(YEAR_2001));
assertThat(term.getCount()).isEqualTo(2);
term = facet.getTerms().get(2);
assertThat(term.getTerm()).isEqualTo(Long.toString(YEAR_2002));
assertThat(term.getCount()).isEqualTo(1);
term = facet.getTerms().get(3);
assertThat(term.getTerm()).isEqualTo(ARTUR_KONCZAK);
assertThat(term.getCount()).isEqualTo(3);
term = facet.getTerms().get(4);
assertThat(term.getTerm()).isEqualTo(JONATHAN_YAN);
assertThat(term.getCount()).isEqualTo(1);
term = facet.getTerms().get(5);
assertThat(term.getTerm()).isEqualTo(MOHSIN_HUSEN);
assertThat(term.getCount()).isEqualTo(2);
term = facet.getTerms().get(6);
assertThat(term.getTerm()).isEqualTo(RIZWAN_IDREES);
assertThat(term.getCount()).isEqualTo(4);
assertThat(facet.getTotal()).isEqualTo(16);
assertThat(facet.getOther()).isEqualTo(0);
assertThat(facet.getMissing()).isEqualTo(1);
assertThatThrownBy(() -> {
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
.withFacet(
new TermFacetRequestBuilder(facetName).fields("publishedYears", "authors.untouched").ascTerm().build())
.build();
}).isInstanceOf(IllegalArgumentException.class);
}
@Test
@ -447,38 +407,15 @@ public class ElasticsearchTemplateFacetTests {
assertThat(stringFacet.getMissing()).isEqualTo(0);
}
@Test(expected = UnsupportedOperationException.class)
@Test
public void shouldThrowExceptionForNativeFacets() {
// given
String facetName = "fyears";
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
.withFacet(new NativeFacetRequest()).build();
// when
FacetedPage<ArticleEntity> result = elasticsearchTemplate.queryForPage(searchQuery, ArticleEntity.class);
// then
assertThat(result.getNumberOfElements()).isEqualTo(4);
TermResult facet = (TermResult) result.getFacet(facetName);
assertThat(facet.getTerms()).hasSize(3);
Term term = facet.getTerms().get(0);
assertThat(term.getTerm()).isEqualTo(Long.toString(YEAR_2000));
assertThat(term.getCount()).isEqualTo(3);
term = facet.getTerms().get(1);
assertThat(term.getTerm()).isEqualTo(Long.toString(YEAR_2001));
assertThat(term.getCount()).isEqualTo(2);
term = facet.getTerms().get(2);
assertThat(term.getTerm()).isEqualTo(Long.toString(YEAR_2002));
assertThat(term.getCount()).isEqualTo(1);
assertThat(facet.getTotal()).isEqualTo(6);
assertThat(facet.getOther()).isEqualTo(0);
assertThat(facet.getMissing()).isEqualTo(1);
assertThatThrownBy(() -> {
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
.withFacet(new NativeFacetRequest()).build();
}).isInstanceOf(UnsupportedOperationException.class);
}
@Test

View File

@ -30,9 +30,8 @@ import java.lang.Long;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Version;
@ -41,8 +40,9 @@ import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.Score;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchTemplateConfiguration;
import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
/**
* @author Rizwan Idrees
@ -50,13 +50,13 @@ import org.springframework.test.context.junit4.SpringRunner;
* @author Peter-Josef Meisch
* @author James Bodkin
*/
@RunWith(SpringRunner.class)
@ContextConfiguration("classpath:elasticsearch-template-test.xml")
@SpringIntegrationTest
@ContextConfiguration(classes = { ElasticsearchTemplateConfiguration.class })
public class CriteriaQueryTests {
@Autowired private ElasticsearchTemplate elasticsearchTemplate;
@Before
@BeforeEach
public void before() {
elasticsearchTemplate.deleteIndex(SampleEntity.class);

View File

@ -30,11 +30,11 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
@ -55,13 +55,13 @@ import org.springframework.data.repository.core.support.DefaultRepositoryMetadat
* @author Christoph Strobl
* @author Peter-Josef Meisch
*/
@RunWith(MockitoJUnitRunner.class)
@ExtendWith(MockitoExtension.class)
public class ElasticsearchStringQueryUnitTests {
@Mock ElasticsearchOperations operations;
ElasticsearchConverter converter;
ElasticsearchConverter converter;
@Before
@BeforeEach
public void setUp() {
converter = new MappingElasticsearchConverter(new SimpleElasticsearchMappingContext());
}

View File

@ -31,8 +31,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.dao.InvalidDataAccessApiUsageException;
import org.springframework.data.annotation.Id;
import org.springframework.data.domain.Page;
@ -58,7 +58,7 @@ public class ReactiveElasticsearchQueryMethodUnitTests {
public static final String INDEX_NAME = "test-index-person-reactive-repository-query";
SimpleElasticsearchMappingContext mappingContext;
@Before
@BeforeEach
public void setUp() {
mappingContext = new SimpleElasticsearchMappingContext();
}
@ -74,28 +74,32 @@ public class ReactiveElasticsearchQueryMethodUnitTests {
assertThat(metadata.getIndexTypeName()).isEqualTo("user");
}
@Test(expected = IllegalArgumentException.class) // DATAES-519
@Test // DATAES-519
public void rejectsNullMappingContext() throws Exception {
Method method = PersonRepository.class.getMethod("findByName", String.class);
new ReactiveElasticsearchQueryMethod(method, new DefaultRepositoryMetadata(PersonRepository.class),
new SpelAwareProxyProjectionFactory(), null);
assertThatThrownBy(() -> new ReactiveElasticsearchQueryMethod(method,
new DefaultRepositoryMetadata(PersonRepository.class), new SpelAwareProxyProjectionFactory(), null))
.isInstanceOf(IllegalArgumentException.class);
}
@Test(expected = IllegalStateException.class) // DATAES-519
@Test // DATAES-519
public void rejectsMonoPageableResult() throws Exception {
queryMethod(PersonRepository.class, "findMonoByName", String.class, Pageable.class);
assertThatThrownBy(() -> queryMethod(PersonRepository.class, "findMonoByName", String.class, Pageable.class))
.isInstanceOf(IllegalStateException.class);
}
@Test(expected = InvalidDataAccessApiUsageException.class) // DATAES-519
@Test // DATAES-519
public void throwsExceptionOnWrappedPage() throws Exception {
queryMethod(PersonRepository.class, "findMonoPageByName", String.class, Pageable.class);
assertThatThrownBy(() -> queryMethod(PersonRepository.class, "findMonoPageByName", String.class, Pageable.class))
.isInstanceOf(InvalidDataAccessApiUsageException.class);
}
@Test(expected = InvalidDataAccessApiUsageException.class) // DATAES-519
@Test // DATAES-519
public void throwsExceptionOnWrappedSlice() throws Exception {
queryMethod(PersonRepository.class, "findMonoSliceByName", String.class, Pageable.class);
assertThatThrownBy(() -> queryMethod(PersonRepository.class, "findMonoSliceByName", String.class, Pageable.class))
.isInstanceOf(InvalidDataAccessApiUsageException.class);
}
@Test // DATAES-519

View File

@ -22,7 +22,6 @@ import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@ -33,12 +32,12 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
@ -47,6 +46,7 @@ import org.springframework.data.elasticsearch.annotations.InnerField;
import org.springframework.data.elasticsearch.annotations.MultiField;
import org.springframework.data.elasticsearch.annotations.Query;
import org.springframework.data.elasticsearch.core.ReactiveElasticsearchOperations;
import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter;
import org.springframework.data.elasticsearch.core.convert.MappingElasticsearchConverter;
import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext;
import org.springframework.data.elasticsearch.core.query.StringQuery;
@ -60,7 +60,7 @@ import org.springframework.expression.spel.standard.SpelExpressionParser;
* @author Christoph Strobl
* @author Peter-Josef Meisch
*/
@RunWith(MockitoJUnitRunner.class)
@ExtendWith(MockitoExtension.class)
public class ReactiveElasticsearchStringQueryUnitTests {
SpelExpressionParser PARSER = new SpelExpressionParser();
@ -68,7 +68,7 @@ public class ReactiveElasticsearchStringQueryUnitTests {
@Mock ReactiveElasticsearchOperations operations;
@Before
@BeforeEach
public void setUp() {
converter = new MappingElasticsearchConverter(new SimpleElasticsearchMappingContext());
}
@ -87,7 +87,7 @@ public class ReactiveElasticsearchStringQueryUnitTests {
}
@Test // DATAES-519
@Ignore("TODO: fix spel query integration")
@Disabled("TODO: fix spel query integration")
public void bindsExpressionPropertyCorrectly() throws Exception {
ReactiveElasticsearchStringQuery elasticsearchStringQuery = createQueryForMethod("findByNameWithExpression",

View File

@ -15,39 +15,50 @@
*/
package org.springframework.data.elasticsearch.repository.support;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity;
import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentProperty;
import org.springframework.data.mapping.context.MappingContext;
import static org.assertj.core.api.Assertions.*;
import java.util.HashSet;
import java.util.Set;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext;
import org.springframework.data.mapping.MappingException;
/**
* @author Florian Hopf
* @author Mark Paluch
*/
@RunWith(MockitoJUnitRunner.class)
public class ElasticsearchEntityInformationCreatorImplTests {
@Mock MappingContext<? extends ElasticsearchPersistentEntity<?>, ElasticsearchPersistentProperty> mappingContext;
@Mock ElasticsearchPersistentEntity<String> persistentEntity;
ElasticsearchEntityInformationCreatorImpl entityInfoCreator;
@Before
@BeforeEach
public void before() {
entityInfoCreator = new ElasticsearchEntityInformationCreatorImpl(mappingContext);
SimpleElasticsearchMappingContext context = new SimpleElasticsearchMappingContext();
Set<Class<?>> entites = new HashSet<>();
entites.add(EntityNoId.class);
context.setInitialEntitySet(entites);
entityInfoCreator = new ElasticsearchEntityInformationCreatorImpl(context);
}
@Test(expected = IllegalArgumentException.class)
public void shouldThrowIllegalArgumentExceptionOnMissingEntity() {
entityInfoCreator.getEntityInformation(String.class);
@Test
public void shouldThrowMappingExceptionOnMissingEntity() {
assertThatThrownBy(() -> {
entityInfoCreator.getEntityInformation(String.class);
}).isInstanceOf(MappingException.class);
}
@Test(expected = IllegalArgumentException.class)
@Test
public void shouldThrowIllegalArgumentExceptionOnMissingIdAnnotation() {
entityInfoCreator.getEntityInformation(String.class);
assertThatThrownBy(() -> {
entityInfoCreator.getEntityInformation(EntityNoId.class);
}).isInstanceOf(IllegalArgumentException.class).hasMessageContaining("No id property found");
}
@Document(indexName = "whatever")
static class EntityNoId {
}
}

View File

@ -1,60 +0,0 @@
/*
* Copyright 2013-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.data.elasticsearch.repository.support;
import static org.mockito.Mockito.*;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter;
import org.springframework.data.elasticsearch.core.convert.MappingElasticsearchConverter;
import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.data.repository.core.RepositoryMetadata;
import org.springframework.data.repository.core.support.DefaultRepositoryMetadata;
/**
* @author Rizwan Idrees
* @author Mohsin Husen
* @author Mark Paluch
* @author Peter-Josef Meisch
*/
@RunWith(MockitoJUnitRunner.class)
public class ElasticsearchRepositoryFactoryTests {
@Mock private ElasticsearchOperations operations;
private ElasticsearchRepositoryFactory factory;
@Before
public void before() {
ElasticsearchConverter converter = new MappingElasticsearchConverter(new SimpleElasticsearchMappingContext());
when(operations.getElasticsearchConverter()).thenReturn(converter);
factory = new ElasticsearchRepositoryFactory(operations);
}
@Test(expected = IllegalArgumentException.class)
public void shouldThrowExceptionGivenQueryDslRepository() {
// given
RepositoryMetadata metadata = new DefaultRepositoryMetadata(QuerydslPredicateExecutor.class);
// when
factory.getRepositoryBaseClass(metadata);
}
}

View File

@ -39,20 +39,18 @@ import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.support.WriteRequest.RefreshPolicy;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.reactivestreams.Publisher;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Version;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Order;
import org.springframework.data.elasticsearch.junit.junit4.TestNodeResource;
import org.springframework.data.elasticsearch.TestUtils;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
@ -60,23 +58,23 @@ import org.springframework.data.elasticsearch.annotations.Query;
import org.springframework.data.elasticsearch.annotations.Score;
import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient;
import org.springframework.data.elasticsearch.config.AbstractReactiveElasticsearchConfiguration;
import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchRestTemplateConfiguration;
import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest;
import org.springframework.data.elasticsearch.repository.config.EnableReactiveElasticsearchRepositories;
import org.springframework.data.repository.reactive.ReactiveCrudRepository;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.util.StringUtils;
/**
* @author Christoph Strobl
* @author Peter-Josef Meisch
*/
@RunWith(SpringRunner.class)
@ContextConfiguration
@SpringIntegrationTest
@ContextConfiguration(classes = { SimpleReactiveElasticsearchRepositoryTests.Config.class })
public class SimpleReactiveElasticsearchRepositoryTests {
@ClassRule public static TestNodeResource testNodeResource = new TestNodeResource();
@Configuration
@Import({ ElasticsearchRestTemplateConfiguration.class })
@EnableReactiveElasticsearchRepositories(considerNestedRepositories = true)
static class Config extends AbstractReactiveElasticsearchConfiguration {
@ -91,7 +89,7 @@ public class SimpleReactiveElasticsearchRepositoryTests {
@Autowired ReactiveSampleEntityRepository repository;
@Before
@BeforeEach
public void setUp() {
TestUtils.deleteIndex(INDEX);
}