11package io .weaviate .client .v1 .batch .api ;
22
3+ import java .util .ArrayList ;
34import java .util .Arrays ;
45import java .util .List ;
56import java .util .stream .Collectors ;
67
8+ import org .apache .http .HttpStatus ;
79import org .assertj .core .api .Assertions ;
810import org .junit .Test ;
11+ import org .junit .runner .RunWith ;
912
10- import com .github .dockerjava .zerodep .shaded .org .apache .hc .core5 .http .HttpStatus ;
13+ import com .jparams .junit4 .JParamsTestRunner ;
14+ import com .jparams .junit4 .data .DataMethod ;
1115
1216import io .weaviate .client .base .Result ;
1317import io .weaviate .client .base .WeaviateError ;
1620import io .weaviate .client .v1 .batch .model .ObjectGetResponse ;
1721import io .weaviate .client .v1 .data .model .WeaviateObject ;
1822
23+ @ RunWith (JParamsTestRunner .class )
1924public class ObjectsBatcherTest {
25+ public static Object [][] batchReplyTestCases () {
26+ return new Object [][] {
27+ { 1 , 2 },
28+ { 0 , 3 },
29+ { 3 , 0 },
30+ { 2 , 2 },
31+ };
32+ }
33+
34+ @ DataMethod (source = ObjectsBatcherTest .class , method = "batchReplyTestCases" )
2035 @ Test
21- public void test_resultFromBatchObjectsReply () {
36+ public void test_resultFromBatchObjectsReply (int wantSucceed , int wantFail ) {
2237 // Arrange
23- List <WeaviateObject > batch = Arrays .asList (
24- WeaviateObject .builder ().id ("id-0" ).build (),
25- WeaviateObject .builder ().id ("id-1" ).build (),
26- WeaviateObject .builder ().id ("id-2" ).build ());
27- WeaviateProtoBatch .BatchObjectsReply reply = WeaviateProtoBatch .BatchObjectsReply .newBuilder ()
28- .addAllErrors (Arrays .asList (
29- WeaviateProtoBatch .BatchObjectsReply .BatchError .newBuilder ()
30- .setIndex (0 ).setError ("error-0" )
31- .build (),
32- WeaviateProtoBatch .BatchObjectsReply .BatchError .newBuilder ()
33- .setIndex (1 ).setError ("error-1" )
34- .build ()))
35- .build ();
36-
37- // Act
38- Result <ObjectGetResponse []> got = ObjectsBatcher .resultFromBatchObjectsReply (reply , batch );
38+ List <WeaviateObject > batch = new ArrayList <>();
39+ int total = wantSucceed + wantFail ;
40+ for (int i = 0 ; i < total ; i ++) {
41+ batch .add (WeaviateObject .builder ().id ("id-" + i ).build ());
42+ }
43+
44+ WeaviateProtoBatch .BatchObjectsReply .Builder reply = WeaviateProtoBatch .BatchObjectsReply .newBuilder ();
45+ for (int i = 0 ; i < wantFail ; i ++) {
46+ reply .addErrors (WeaviateProtoBatch .BatchObjectsReply .BatchError .newBuilder ()
47+ .setIndex (i ).setError ("error-" + i )
48+ .build ());
49+ }
50+
51+ Result <ObjectGetResponse []> got = ObjectsBatcher .resultFromBatchObjectsReply (reply .build (), batch );
3952
4053 // Assert
4154 List <ObjectGetResponse > succeeded = Arrays .stream (got .getResult ())
@@ -44,15 +57,24 @@ public void test_resultFromBatchObjectsReply() {
4457 List <ObjectGetResponse > failed = Arrays .stream (got .getResult ())
4558 .filter (result -> result .getResult ().getErrors () != null )
4659 .collect (Collectors .toList ());
47- Assertions .assertThat (got .getResult ()).hasSize (3 );
48- Assertions .assertThat (succeeded ).hasSize (1 );
49- Assertions .assertThat (failed ).hasSize (2 );
60+ Assertions .assertThat (got .getResult ()).hasSize (total );
61+ Assertions .assertThat (failed ).hasSize (wantFail );
62+ Assertions .assertThat (succeeded ).hasSize (wantSucceed );
63+
64+ if (wantFail == 0 ) {
65+ Assertions .assertThat (got .getError ()).isNull ();
66+ return ;
67+ }
5068
69+ String [] wantErrors = new String [wantFail ];
70+ for (int i = 0 ; i < failed .size (); i ++) {
71+ wantErrors [i ] = failed .get (i ).getResult ().getErrors ().getError ().get (0 ).getMessage ();
72+ }
5173 Assertions .assertThat (got .getError ()).returns (HttpStatus .SC_UNPROCESSABLE_ENTITY , WeaviateError ::getStatusCode );
5274 Assertions .assertThat (got .getError ().getMessages ())
53- .hasSize (2 )
75+ .hasSize (wantFail )
5476 .extracting (WeaviateErrorMessage ::getMessage )
55- .contains ("error-0" , "error-1" );
77+ .contains (wantErrors );
5678
5779 }
5880}
0 commit comments