|
33 | 33 | import java.util.stream.Collectors;
|
34 | 34 | import java.util.stream.IntStream;
|
35 | 35 |
|
| 36 | +import org.assertj.core.api.InstanceOfAssertFactories; |
36 | 37 | import org.assertj.core.api.SoftAssertions;
|
37 | 38 | import org.junit.jupiter.api.BeforeEach;
|
38 | 39 | import org.junit.jupiter.api.DisplayName;
|
|
48 | 49 | import org.springframework.data.domain.PageRequest;
|
49 | 50 | import org.springframework.data.domain.Pageable;
|
50 | 51 | import org.springframework.data.domain.Sort;
|
| 52 | +import org.springframework.data.elasticsearch.BulkFailureException; |
51 | 53 | import org.springframework.data.elasticsearch.annotations.*;
|
52 | 54 | import org.springframework.data.elasticsearch.annotations.Field;
|
53 | 55 | import org.springframework.data.elasticsearch.annotations.ScriptedField;
|
|
98 | 100 | * @author Haibo Liu
|
99 | 101 | * @author scoobyzhang
|
100 | 102 | * @author Hamid Rahimi
|
| 103 | + * @author Illia Ulianov |
101 | 104 | */
|
102 | 105 | @SpringIntegrationTest
|
103 | 106 | public abstract class ElasticsearchIntegrationTests {
|
@@ -3616,6 +3619,27 @@ void shouldNotErrorOnSortWithUnmappedFieldAndUnmappedTypeSettings() {
|
3616 | 3619 | operations.search(query, SampleEntity.class);
|
3617 | 3620 | }
|
3618 | 3621 |
|
| 3622 | + @Test // #2619 |
| 3623 | + void shouldFailWithConflictOnAttemptToSaveWithSameVersion() { |
| 3624 | + var entity1 = new VersionedEntity(); |
| 3625 | + entity1.setId("id1"); |
| 3626 | + entity1.setVersion(1L); |
| 3627 | + var entity2 = new VersionedEntity(); |
| 3628 | + entity2.setId("id2"); |
| 3629 | + entity2.setVersion(1L); |
| 3630 | + operations.save(entity1, entity2); |
| 3631 | + |
| 3632 | + entity1.setVersion(2L); |
| 3633 | + assertThatThrownBy(() -> operations.save(entity1, entity2)) |
| 3634 | + .asInstanceOf(InstanceOfAssertFactories.type(BulkFailureException.class)) |
| 3635 | + .extracting(BulkFailureException::getFailedDocuments) |
| 3636 | + .asInstanceOf(InstanceOfAssertFactories.map(String.class, BulkFailureException.FailureDetails.class)) |
| 3637 | + .containsOnlyKeys("id2") |
| 3638 | + .extracting(Map::values) |
| 3639 | + .asInstanceOf(InstanceOfAssertFactories.collection(BulkFailureException.FailureDetails.class)) |
| 3640 | + .allMatch(failureStatus -> failureStatus.status().equals(409)); |
| 3641 | + } |
| 3642 | + |
3619 | 3643 | // region entities
|
3620 | 3644 | @Document(indexName = "#{@indexNameProvider.indexName()}")
|
3621 | 3645 | @Setting(shards = 1, replicas = 0, refreshInterval = "-1")
|
|
0 commit comments