23
23
import java .io .IOException ;
24
24
import java .util .ArrayList ;
25
25
import java .util .Arrays ;
26
+ import java .util .Collection ;
27
+ import java .util .HashMap ;
26
28
import java .util .List ;
29
+ import java .util .Map ;
27
30
28
31
import org .junit .Before ;
29
32
import org .junit .Test ;
30
33
34
+ import com .arangodb .entity .BaseDocument ;
35
+ import com .arangodb .entity .CollectionOptions ;
36
+ import com .arangodb .entity .CollectionType ;
31
37
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 ;
32
43
import com .arangodb .util .TestUtils ;
33
44
34
45
/**
39
50
public class ArangoDriverImportTest extends BaseTest {
40
51
41
52
private static final String UT_IMPORT_TEST = "ut-import-test" ;
53
+ private static final String UT_IMPORT_TEST_EDGE = "ut-import-test-edge" ;
42
54
43
55
@ Before
44
56
public void setUp () {
@@ -50,6 +62,16 @@ public void setUp() {
50
62
driver .createCollection (UT_IMPORT_TEST );
51
63
} catch (final ArangoException e ) {
52
64
}
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
+ }
53
75
}
54
76
55
77
@ Test
@@ -85,6 +107,244 @@ public void test_import_documents_404() throws ArangoException, IOException {
85
107
86
108
}
87
109
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
+
88
348
@ Test
89
349
public void test_import_xsv () throws ArangoException , IOException {
90
350
@@ -100,7 +360,9 @@ public void test_import_xsv() throws ArangoException, IOException {
100
360
assertThat (result .getCreated (), is (2 ));
101
361
assertThat (result .getErrors (), is (0 ));
102
362
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 ));
104
366
}
105
367
106
368
@ Test
@@ -118,30 +380,22 @@ public void test_import_xsv_errors() throws ArangoException, IOException {
118
380
assertThat (result .getCreated (), is (1 ));
119
381
assertThat (result .getErrors (), is (1 ));
120
382
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 ));
122
386
}
123
387
124
388
@ 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 {
131
390
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\" ]" ;
136
392
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 ());
144
395
396
+ assertThat (result .getStatusCode (), is (201 ));
397
+ assertThat (result .isError (), is (false ));
398
+ assertThat (result .getCreated (), is (2 ));
145
399
}
146
400
147
401
}
0 commit comments