From 61ac2cf820c25303b6eb92fcd1ea575aaca1abbc Mon Sep 17 00:00:00 2001 From: dyma solovei Date: Fri, 29 Aug 2025 12:32:51 +0200 Subject: [PATCH 1/2] test: add unit test for batch reply unmarshalling --- .../v1/batch/api/ObjectsBatcherTest.java | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/test/java/io/weaviate/client/v1/batch/api/ObjectsBatcherTest.java diff --git a/src/test/java/io/weaviate/client/v1/batch/api/ObjectsBatcherTest.java b/src/test/java/io/weaviate/client/v1/batch/api/ObjectsBatcherTest.java new file mode 100644 index 000000000..7e40b4507 --- /dev/null +++ b/src/test/java/io/weaviate/client/v1/batch/api/ObjectsBatcherTest.java @@ -0,0 +1,58 @@ +package io.weaviate.client.v1.batch.api; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import org.assertj.core.api.Assertions; +import org.junit.Test; + +import com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.http.HttpStatus; + +import io.weaviate.client.base.Result; +import io.weaviate.client.base.WeaviateError; +import io.weaviate.client.base.WeaviateErrorMessage; +import io.weaviate.client.grpc.protocol.v1.WeaviateProtoBatch; +import io.weaviate.client.v1.batch.model.ObjectGetResponse; +import io.weaviate.client.v1.data.model.WeaviateObject; + +public class ObjectsBatcherTest { + @Test + public void test_resultFromBatchObjectsReply() { + // Arrange + List batch = Arrays.asList( + WeaviateObject.builder().id("id-0").build(), + WeaviateObject.builder().id("id-1").build(), + WeaviateObject.builder().id("id-2").build()); + WeaviateProtoBatch.BatchObjectsReply reply = WeaviateProtoBatch.BatchObjectsReply.newBuilder() + .addAllErrors(Arrays.asList( + WeaviateProtoBatch.BatchObjectsReply.BatchError.newBuilder() + .setIndex(0).setError("error-0") + .build(), + WeaviateProtoBatch.BatchObjectsReply.BatchError.newBuilder() + .setIndex(1).setError("error-1") + .build())) + .build(); + + // Act + Result got = ObjectsBatcher.resultFromBatchObjectsReply(reply, batch); + + // Assert + List succeeded = Arrays.stream(got.getResult()) + .filter(result -> result.getResult().getErrors() == null) + .collect(Collectors.toList()); + List failed = Arrays.stream(got.getResult()) + .filter(result -> result.getResult().getErrors() != null) + .collect(Collectors.toList()); + Assertions.assertThat(got.getResult()).hasSize(3); + Assertions.assertThat(succeeded).hasSize(1); + Assertions.assertThat(failed).hasSize(2); + + Assertions.assertThat(got.getError()).returns(HttpStatus.SC_UNPROCESSABLE_ENTITY, WeaviateError::getStatusCode); + Assertions.assertThat(got.getError().getMessages()) + .hasSize(2) + .extracting(WeaviateErrorMessage::getMessage) + .contains("error-0", "error-1"); + + } +} From b35cd87ac655e868829dcf28a5344cb8fb7fc8fa Mon Sep 17 00:00:00 2001 From: dyma solovei Date: Fri, 29 Aug 2025 12:54:20 +0200 Subject: [PATCH 2/2] test: parametrize number of failed/succeeded objects --- pom.xml | 1 + .../v1/batch/api/ObjectsBatcherTest.java | 68 ++++++++++++------- 2 files changed, 46 insertions(+), 23 deletions(-) diff --git a/pom.xml b/pom.xml index c30c0136d..d8b0f8239 100644 --- a/pom.xml +++ b/pom.xml @@ -239,6 +239,7 @@ maven-surefire-plugin 2.22.2 + false