package com.silverforge.elasticsearchrawclient.elasticFacade;
import com.silverforge.elasticsearchrawclient.BuildConfig;
import com.silverforge.elasticsearchrawclient.model.BulkActionResult;
import com.silverforge.elasticsearchrawclient.model.BulkTuple;
import com.silverforge.elasticsearchrawclient.testModel.SimpleCity;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricGradleTestRunner;
import org.robolectric.annotation.Config;
import java.util.ArrayList;
import java.util.List;
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
public class ElasticClientBulkTest extends ElasticClientBaseTest {
@Test
public void bulkTest() {
ArrayList<BulkTuple> bulkItems = new ArrayList<>();
bulkItems.add(BulkTuple
.builder()
.indexName("cities")
.typeName("city")
.id("szekesfehervar")
.entity(new SimpleCity("Székesfehérvár"))
.operationType(OperationType.CREATE)
.build()
);
bulkItems.add(BulkTuple
.builder()
.indexName("cities")
.typeName("city")
.id("bekescsaba")
.entity(new SimpleCity("Békéscsaba"))
.operationType(OperationType.CREATE)
.build()
);
bulkItems.add(BulkTuple
.builder()
.indexName("cities")
.typeName("city")
.id("bekescsaba")
.operationType(OperationType.DELETE)
.build()
);
bulkItems.add(BulkTuple
.builder()
.indexName("cities")
.typeName("city")
.id("debrecen")
.entity(new SimpleCity("Debrecen"))
.operationType(OperationType.INDEX)
.build()
);
List<BulkActionResult> actionResults = client.bulk(bulkItems);
assertThat(actionResults, not(nullValue()));
assertThat(actionResults.size(), is(equalTo(bulkItems.size())));
for (BulkActionResult actionResult : actionResults) {
if (actionResult.getOperation() == OperationType.CREATE)
client.removeDocument("cities", "city", actionResult.getId());
}
}
}