Skip to content

Commit 1739b5d

Browse files
committed
Test calling multi chat response using convenience
1 parent 3f0b93b commit 1739b5d

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

orchestration/src/main/java/com/sap/ai/sdk/orchestration/OrchestrationChatResponse.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public List<Message> getAllMessages() throws UnsupportedOperationException {
7171
messages.add(message);
7272
} else {
7373
throw new UnsupportedOperationException(
74-
"Currently MultiChatMessage type not supported by convenience API");
74+
"Messages of MultiChatMessage type not supported by convenience API");
7575
}
7676
}
7777

orchestration/src/test/java/com/sap/ai/sdk/orchestration/OrchestrationUnitTest.java

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,21 @@
3131
import static org.mockito.Mockito.when;
3232

3333
import com.fasterxml.jackson.core.JsonParseException;
34+
import com.fasterxml.jackson.databind.ObjectMapper;
35+
import com.fasterxml.jackson.databind.module.SimpleModule;
3436
import com.github.tomakehurst.wiremock.junit5.WireMockRuntimeInfo;
3537
import com.github.tomakehurst.wiremock.junit5.WireMockTest;
3638
import com.github.tomakehurst.wiremock.stubbing.Scenario;
3739
import com.sap.ai.sdk.orchestration.model.ChatMessage;
40+
import com.sap.ai.sdk.orchestration.model.ChatMessagesInner;
3841
import com.sap.ai.sdk.orchestration.model.CompletionPostRequest;
42+
import com.sap.ai.sdk.orchestration.model.CompletionPostResponse;
3943
import com.sap.ai.sdk.orchestration.model.DPIEntities;
4044
import com.sap.ai.sdk.orchestration.model.GenericModuleResult;
4145
import com.sap.ai.sdk.orchestration.model.ImageContent;
4246
import com.sap.ai.sdk.orchestration.model.ImageContentImageUrl;
4347
import com.sap.ai.sdk.orchestration.model.LLMModuleConfig;
48+
import com.sap.ai.sdk.orchestration.model.LLMModuleResult;
4449
import com.sap.ai.sdk.orchestration.model.LLMModuleResultSynchronous;
4550
import com.sap.ai.sdk.orchestration.model.ModuleConfigs;
4651
import com.sap.ai.sdk.orchestration.model.MultiChatMessage;
@@ -58,6 +63,7 @@
5863
import java.util.function.Function;
5964
import java.util.stream.Stream;
6065
import javax.annotation.Nonnull;
66+
import lombok.SneakyThrows;
6167
import org.apache.hc.client5.http.classic.HttpClient;
6268
import org.apache.hc.core5.http.ContentType;
6369
import org.apache.hc.core5.http.io.entity.InputStreamEntity;
@@ -638,7 +644,7 @@ void streamChatCompletionDeltas() throws IOException {
638644
}
639645

640646
@Test
641-
void testMultiChatMessageRequest() throws IOException {
647+
void testRequestWithMultiChatMessage() throws IOException {
642648

643649
stubFor(
644650
post("/completion")
@@ -743,4 +749,29 @@ void testMultiChatMessageRequest() throws IOException {
743749
.withRequestBody(equalToJson(requestBody)));
744750
}
745751
}
752+
753+
@SneakyThrows
754+
@Test
755+
void testOrchestrationChatResponseWithImage() {
756+
var module = new SimpleModule();
757+
module.setMixInAnnotation(LLMModuleResult.class, JacksonMixins.NoneTypeInfoMixin.class);
758+
module.addDeserializer(
759+
LLMModuleResult.class, new PolymorphicFallbackDeserializer<>(LLMModuleResult.class));
760+
module.setMixInAnnotation(ChatMessagesInner.class, JacksonMixins.NoneTypeInfoMixin.class);
761+
module.addDeserializer(
762+
ChatMessagesInner.class, new PolymorphicFallbackDeserializer<>(ChatMessagesInner.class));
763+
764+
var orchestrationChatResponse =
765+
new OrchestrationChatResponse(
766+
new ObjectMapper()
767+
.registerModule(module)
768+
.readValue(
769+
new String(
770+
fileLoader.apply("__files/multiChatMessageResponse.json").readAllBytes()),
771+
CompletionPostResponse.class));
772+
773+
assertThatThrownBy(orchestrationChatResponse::getAllMessages)
774+
.isInstanceOf(UnsupportedOperationException.class)
775+
.hasMessage("Messages of MultiChatMessage type not supported by convenience API");
776+
}
746777
}

0 commit comments

Comments
 (0)