package com.github.obourgain.elasticsearch.http.handler.document; import java.io.IOException; import java.util.concurrent.ExecutionException; import org.assertj.core.api.Assertions; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.client.Requests; import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.index.VersionType; import org.junit.Test; import com.github.obourgain.elasticsearch.http.AbstractTest; import com.github.obourgain.elasticsearch.http.response.ElasticsearchHttpException; import com.github.obourgain.elasticsearch.http.handler.document.delete.DeleteResponse; public class DeleteActionHandlerTest extends AbstractTest { @Test public void should_delete_document() throws IOException, ExecutionException, InterruptedException { BytesReference source = source().bytes(); IndexRequest request = Requests.indexRequest().index(THE_INDEX) .type(THE_TYPE) .id(THE_ID) .source(source.toBytes()); transportClient.index(request).actionGet(); DeleteResponse response = httpClient.delete(Requests.deleteRequest(THE_INDEX).type(THE_TYPE).id(THE_ID)).get(); Assertions.assertThat(response.getIndex()).isEqualTo(THE_INDEX); Assertions.assertThat(response.getType()).isEqualTo(THE_TYPE); Assertions.assertThat(response.getId()).isEqualTo(THE_ID); Assertions.assertThat(response.getVersion()).isEqualTo(2); Assertions.assertThat(response.isFound()).isTrue(); } @Test public void should_fail_for_different_versions() throws IOException, ExecutionException, InterruptedException { BytesReference source = source().bytes(); IndexRequest request = Requests.indexRequest().index(THE_INDEX) .type(THE_TYPE) .id(THE_ID) .version(1) .versionType(VersionType.EXTERNAL) .refresh(true) .source(source.toBytes()); transportClient.index(request).actionGet(); try { httpClient.delete(Requests.deleteRequest(THE_INDEX).type(THE_TYPE).id(THE_ID).version(2)).get(); } catch (ExecutionException e) { Assertions.assertThat(e).hasCauseInstanceOf(ElasticsearchHttpException.class); Assertions.assertThat(e.getMessage()).contains("status code 409"); Assertions.assertThat(e.getMessage()).contains("VersionConflictEngineException"); Assertions.assertThat(e.getMessage()).contains("version conflict, current [1], provided [2]"); } } }