Skip to content

Commit 6cc61b0

Browse files
author
a-brandt
committed
2 parents 4b7d3c5 + 50404c7 commit 6cc61b0

File tree

1 file changed

+273
-19
lines changed

1 file changed

+273
-19
lines changed

Diff for: src/test/java/com/arangodb/ArangoDriverImportTest.java

+273-19
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,23 @@
2323
import java.io.IOException;
2424
import java.util.ArrayList;
2525
import java.util.Arrays;
26+
import java.util.Collection;
27+
import java.util.HashMap;
2628
import java.util.List;
29+
import java.util.Map;
2730

2831
import org.junit.Before;
2932
import org.junit.Test;
3033

34+
import com.arangodb.entity.BaseDocument;
35+
import com.arangodb.entity.CollectionOptions;
36+
import com.arangodb.entity.CollectionType;
3137
import com.arangodb.entity.ImportResultEntity;
38+
import com.arangodb.util.ImportOptions;
39+
import com.arangodb.util.ImportOptions.OnDuplicate;
40+
import com.arangodb.util.ImportOptionsJson;
41+
import com.arangodb.util.ImportOptionsRaw;
42+
import com.arangodb.util.ImportOptionsRaw.ImportType;
3243
import com.arangodb.util.TestUtils;
3344

3445
/**
@@ -39,6 +50,7 @@
3950
public class ArangoDriverImportTest extends BaseTest {
4051

4152
private static final String UT_IMPORT_TEST = "ut-import-test";
53+
private static final String UT_IMPORT_TEST_EDGE = "ut-import-test-edge";
4254

4355
@Before
4456
public void setUp() {
@@ -50,6 +62,16 @@ public void setUp() {
5062
driver.createCollection(UT_IMPORT_TEST);
5163
} catch (final ArangoException e) {
5264
}
65+
try {
66+
driver.deleteCollection(UT_IMPORT_TEST_EDGE);
67+
} catch (final ArangoException e) {
68+
}
69+
try {
70+
CollectionOptions options = new CollectionOptions();
71+
options.setType(CollectionType.EDGE);
72+
driver.createCollection(UT_IMPORT_TEST_EDGE, options);
73+
} catch (final ArangoException e) {
74+
}
5375
}
5476

5577
@Test
@@ -85,6 +107,244 @@ public void test_import_documents_404() throws ArangoException, IOException {
85107

86108
}
87109

110+
@Test
111+
public void test_import_xsv_404() throws ArangoException, IOException {
112+
113+
try {
114+
driver.deleteCollection(UT_IMPORT_TEST);
115+
} catch (final ArangoException e) {
116+
}
117+
118+
final List<List<?>> values = new ArrayList<List<?>>();
119+
values.add(Arrays.asList("firstName", "lastName", "age", "gender"));
120+
values.add(Arrays.asList("Joe", "Public", 42, "male", 10)); // error
121+
values.add(Arrays.asList("Jane", "Doe", 31, "female"));
122+
123+
try {
124+
driver.importDocuments(UT_IMPORT_TEST, values);
125+
fail();
126+
} catch (final ArangoException e) {
127+
assertThat(e.getCode(), is(404));
128+
assertThat(e.getErrorNumber(), is(1203));
129+
}
130+
131+
}
132+
133+
@Test
134+
public void test_import_updateOnDuplicate() throws ArangoException, IOException {
135+
136+
Collection<BaseDocument> docs = new ArrayList<BaseDocument>();
137+
for (int i = 0; i < 100; i++) {
138+
BaseDocument doc = new BaseDocument();
139+
doc.setDocumentKey(String.valueOf(i));
140+
docs.add(doc);
141+
}
142+
ImportOptionsJson options = new ImportOptionsJson();
143+
{
144+
final ImportResultEntity result = driver.importDocuments(UT_IMPORT_TEST, docs, options);
145+
assertThat(result.getStatusCode(), is(201));
146+
assertThat(result.isError(), is(false));
147+
assertThat(result.getCreated(), is(docs.size()));
148+
}
149+
options.setOnDuplicate(OnDuplicate.UPDATE);
150+
{
151+
final ImportResultEntity result = driver.importDocuments(UT_IMPORT_TEST, docs, options);
152+
assertThat(result.getStatusCode(), is(201));
153+
assertThat(result.isError(), is(false));
154+
assertThat(result.getCreated(), is(0));
155+
assertThat(result.getUpdated(), is(docs.size()));
156+
}
157+
}
158+
159+
@Test
160+
public void test_import_ignoreOnDuplicate() throws ArangoException, IOException {
161+
162+
Collection<BaseDocument> docs = new ArrayList<BaseDocument>();
163+
for (int i = 0; i < 100; i++) {
164+
BaseDocument doc = new BaseDocument();
165+
doc.setDocumentKey(String.valueOf(i));
166+
docs.add(doc);
167+
}
168+
ImportOptionsJson options = new ImportOptionsJson();
169+
{
170+
final ImportResultEntity result = driver.importDocuments(UT_IMPORT_TEST, docs, options);
171+
assertThat(result.getStatusCode(), is(201));
172+
assertThat(result.isError(), is(false));
173+
assertThat(result.getCreated(), is(docs.size()));
174+
}
175+
options.setOnDuplicate(OnDuplicate.IGNORE);
176+
{
177+
final ImportResultEntity result = driver.importDocuments(UT_IMPORT_TEST, docs, options);
178+
assertThat(result.getStatusCode(), is(201));
179+
assertThat(result.isError(), is(false));
180+
assertThat(result.getCreated(), is(0));
181+
assertThat(result.getIgnored(), is(docs.size()));
182+
}
183+
}
184+
185+
@Test
186+
public void test_import_replaceOnDuplicate() throws ArangoException, IOException {
187+
188+
Collection<BaseDocument> docs = new ArrayList<BaseDocument>();
189+
for (int i = 0; i < 100; i++) {
190+
BaseDocument doc = new BaseDocument();
191+
doc.setDocumentKey(String.valueOf(i));
192+
docs.add(doc);
193+
}
194+
ImportOptionsJson options = new ImportOptionsJson();
195+
{
196+
final ImportResultEntity result = driver.importDocuments(UT_IMPORT_TEST, docs, options);
197+
assertThat(result.getStatusCode(), is(201));
198+
assertThat(result.isError(), is(false));
199+
assertThat(result.getCreated(), is(docs.size()));
200+
}
201+
options.setOnDuplicate(OnDuplicate.REPLACE);
202+
{
203+
final ImportResultEntity result = driver.importDocuments(UT_IMPORT_TEST, docs, options);
204+
assertThat(result.getStatusCode(), is(201));
205+
assertThat(result.isError(), is(false));
206+
assertThat(result.getCreated(), is(0));
207+
assertThat(result.getUpdated(), is(docs.size()));
208+
}
209+
}
210+
211+
@Test
212+
public void test_import_errorOnDuplicate() throws ArangoException, IOException {
213+
214+
Collection<BaseDocument> docs = new ArrayList<BaseDocument>();
215+
for (int i = 0; i < 100; i++) {
216+
BaseDocument doc = new BaseDocument();
217+
doc.setDocumentKey(String.valueOf(i));
218+
docs.add(doc);
219+
}
220+
ImportOptionsJson options = new ImportOptionsJson();
221+
{
222+
final ImportResultEntity result = driver.importDocuments(UT_IMPORT_TEST, docs, options);
223+
assertThat(result.getStatusCode(), is(201));
224+
assertThat(result.isError(), is(false));
225+
assertThat(result.getCreated(), is(docs.size()));
226+
}
227+
options.setOnDuplicate(OnDuplicate.ERROR);
228+
{
229+
final ImportResultEntity result = driver.importDocuments(UT_IMPORT_TEST, docs, options);
230+
assertThat(result.getStatusCode(), is(201));
231+
assertThat(result.isError(), is(false));
232+
assertThat(result.getCreated(), is(0));
233+
assertThat(result.getErrors(), is(docs.size()));
234+
}
235+
}
236+
237+
@Test
238+
public void test_import_overwrite() throws ArangoException, IOException {
239+
ImportOptionsJson options = new ImportOptionsJson();
240+
{
241+
Collection<BaseDocument> docs = new ArrayList<BaseDocument>();
242+
for (int i = 0; i < 100; i++) {
243+
BaseDocument doc = new BaseDocument();
244+
doc.setDocumentKey(String.valueOf(i));
245+
docs.add(doc);
246+
}
247+
{
248+
final ImportResultEntity result = driver.importDocuments(UT_IMPORT_TEST, docs, options);
249+
assertThat(result.getStatusCode(), is(201));
250+
assertThat(result.isError(), is(false));
251+
assertThat(result.getCreated(), is(docs.size()));
252+
assertThat(docs.size(), is(driver.getDocuments(UT_IMPORT_TEST).size()));
253+
}
254+
}
255+
{
256+
Collection<BaseDocument> docs2 = new ArrayList<BaseDocument>();
257+
for (int i = 0; i < 50; i++) {
258+
BaseDocument doc = new BaseDocument();
259+
doc.setDocumentKey(String.valueOf(-i));
260+
docs2.add(doc);
261+
}
262+
options.setOverwrite(true);
263+
{
264+
final ImportResultEntity result = driver.importDocuments(UT_IMPORT_TEST, docs2, options);
265+
assertThat(result.getStatusCode(), is(201));
266+
assertThat(result.isError(), is(false));
267+
assertThat(result.getCreated(), is(docs2.size()));
268+
assertThat(docs2.size(), is(driver.getDocuments(UT_IMPORT_TEST).size()));
269+
}
270+
}
271+
}
272+
273+
@Test
274+
public void test_import_from_to_Prefix() throws ArangoException, IOException {
275+
ImportOptionsJson options = new ImportOptionsJson();
276+
{
277+
Collection<BaseDocument> docs = new ArrayList<BaseDocument>();
278+
for (int i = 0; i < 100; i++) {
279+
BaseDocument doc = new BaseDocument();
280+
doc.setDocumentKey(String.valueOf(i));
281+
docs.add(doc);
282+
}
283+
{
284+
final ImportResultEntity result = driver.importDocuments(UT_IMPORT_TEST, docs, options);
285+
assertThat(result.getStatusCode(), is(201));
286+
assertThat(result.isError(), is(false));
287+
assertThat(result.getCreated(), is(docs.size()));
288+
}
289+
}
290+
{
291+
Collection<Map<String, Object>> edgeDocs = new ArrayList<Map<String, Object>>();
292+
for (int i = 0; i < 100; i++) {
293+
final HashMap<String, Object> doc = new HashMap<String, Object>();
294+
doc.put(BaseDocument.KEY, String.valueOf(i));
295+
doc.put(BaseDocument.FROM, String.valueOf(i));
296+
doc.put(BaseDocument.TO, String.valueOf(i));
297+
edgeDocs.add(doc);
298+
}
299+
options.setFromPrefix(UT_IMPORT_TEST);
300+
options.setToPrefix(UT_IMPORT_TEST);
301+
final ImportResultEntity result = driver.importDocuments(UT_IMPORT_TEST_EDGE, edgeDocs, options);
302+
assertThat(result.getStatusCode(), is(201));
303+
assertThat(result.isError(), is(false));
304+
assertThat(result.getCreated(), is(edgeDocs.size()));
305+
}
306+
}
307+
308+
@Test
309+
public void test_import_rawList() throws ArangoException {
310+
String values = "[{\"_key\":\"a\"},{\"_key\":\"b\"}]";
311+
ImportOptionsRaw importOptionsRaw = new ImportOptionsRaw(ImportType.LIST);
312+
final ImportResultEntity result = driver.importDocumentsRaw(UT_IMPORT_TEST, values, importOptionsRaw);
313+
assertThat(result.getStatusCode(), is(201));
314+
assertThat(result.isError(), is(false));
315+
assertThat(result.getCreated(), is(2));
316+
}
317+
318+
@Test
319+
public void test_import_rawDocuments() throws ArangoException {
320+
String values = "{\"_key\":\"a\"}\n{\"_key\":\"b\"}";
321+
ImportOptionsRaw importOptionsRaw = new ImportOptionsRaw(ImportType.DOCUMENTS);
322+
final ImportResultEntity result = driver.importDocumentsRaw(UT_IMPORT_TEST, values, importOptionsRaw);
323+
assertThat(result.getStatusCode(), is(201));
324+
assertThat(result.isError(), is(false));
325+
assertThat(result.getCreated(), is(2));
326+
}
327+
328+
@Test
329+
public void test_import_rawAutoList() throws ArangoException {
330+
String values = "[{\"_key\":\"a\"},{\"_key\":\"b\"}]";
331+
ImportOptionsRaw importOptionsRaw = new ImportOptionsRaw(ImportType.LIST);
332+
final ImportResultEntity result = driver.importDocumentsRaw(UT_IMPORT_TEST, values, importOptionsRaw);
333+
assertThat(result.getStatusCode(), is(201));
334+
assertThat(result.isError(), is(false));
335+
assertThat(result.getCreated(), is(2));
336+
}
337+
338+
@Test
339+
public void test_import_rawAutoDocuments() throws ArangoException {
340+
String values = "{\"_key\":\"a\"}\n{\"_key\":\"b\"}";
341+
ImportOptionsRaw importOptionsRaw = new ImportOptionsRaw(ImportType.AUTO);
342+
final ImportResultEntity result = driver.importDocumentsRaw(UT_IMPORT_TEST, values, importOptionsRaw);
343+
assertThat(result.getStatusCode(), is(201));
344+
assertThat(result.isError(), is(false));
345+
assertThat(result.getCreated(), is(2));
346+
}
347+
88348
@Test
89349
public void test_import_xsv() throws ArangoException, IOException {
90350

@@ -100,7 +360,9 @@ public void test_import_xsv() throws ArangoException, IOException {
100360
assertThat(result.getCreated(), is(2));
101361
assertThat(result.getErrors(), is(0));
102362
assertThat(result.getEmpty(), is(0));
103-
363+
assertThat(result.getUpdated(), is(0));
364+
assertThat(result.getIgnored(), is(0));
365+
assertThat(result.getDetails().size(), is(0));
104366
}
105367

106368
@Test
@@ -118,30 +380,22 @@ public void test_import_xsv_errors() throws ArangoException, IOException {
118380
assertThat(result.getCreated(), is(1));
119381
assertThat(result.getErrors(), is(1));
120382
assertThat(result.getEmpty(), is(0));
121-
383+
assertThat(result.getUpdated(), is(0));
384+
assertThat(result.getIgnored(), is(0));
385+
assertThat(result.getDetails().size(), is(0));
122386
}
123387

124388
@Test
125-
public void test_import_xsv_404() throws ArangoException, IOException {
126-
127-
try {
128-
driver.deleteCollection(UT_IMPORT_TEST);
129-
} catch (final ArangoException e) {
130-
}
389+
public void test_import_xsv_raw() throws ArangoException, IOException {
131390

132-
final List<List<?>> values = new ArrayList<List<?>>();
133-
values.add(Arrays.asList("firstName", "lastName", "age", "gender"));
134-
values.add(Arrays.asList("Joe", "Public", 42, "male", 10)); // error
135-
values.add(Arrays.asList("Jane", "Doe", 31, "female"));
391+
final String values = "[\"firstName\",\"lastName\",\"age\",\"gender\"]\n[\"Joe\",\"Public\",42,\"male\"]\n[\"Jane\",\"Doe\",31,\"female\"]";
136392

137-
try {
138-
driver.importDocuments(UT_IMPORT_TEST, values);
139-
fail();
140-
} catch (final ArangoException e) {
141-
assertThat(e.getCode(), is(404));
142-
assertThat(e.getErrorNumber(), is(1203));
143-
}
393+
final ImportResultEntity result = driver.importDocumentsByHeaderValuesRaw(UT_IMPORT_TEST, values,
394+
new ImportOptions());
144395

396+
assertThat(result.getStatusCode(), is(201));
397+
assertThat(result.isError(), is(false));
398+
assertThat(result.getCreated(), is(2));
145399
}
146400

147401
}

0 commit comments

Comments
 (0)