diff --git a/spring-ai-model/src/test/java/org/springframework/ai/embedding/observation/EmbeddingModelObservationContextTests.java b/spring-ai-model/src/test/java/org/springframework/ai/embedding/observation/EmbeddingModelObservationContextTests.java index 06c66c60410..b2e918f5b20 100644 --- a/spring-ai-model/src/test/java/org/springframework/ai/embedding/observation/EmbeddingModelObservationContextTests.java +++ b/spring-ai-model/src/test/java/org/springframework/ai/embedding/observation/EmbeddingModelObservationContextTests.java @@ -25,6 +25,7 @@ import org.springframework.ai.embedding.EmbeddingRequest; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; /** * Unit tests for {@link EmbeddingModelObservationContext}. @@ -43,8 +44,83 @@ void whenMandatoryRequestOptionsThenReturn() { assertThat(observationContext).isNotNull(); } + @Test + void whenBuilderWithNullRequestThenThrowsException() { + assertThatThrownBy(() -> EmbeddingModelObservationContext.builder() + .embeddingRequest(null) + .provider("test-provider") + .build()).isInstanceOf(IllegalArgumentException.class).hasMessage("request cannot be null"); + } + + @Test + void whenBuilderWithNullProviderThenThrowsException() { + var embeddingRequest = generateEmbeddingRequest(EmbeddingOptionsBuilder.builder().model("test-model").build()); + + assertThatThrownBy(() -> EmbeddingModelObservationContext.builder() + .embeddingRequest(embeddingRequest) + .provider(null) + .build()).isInstanceOf(IllegalArgumentException.class).hasMessage("provider cannot be null or empty"); + } + + @Test + void whenBuilderWithEmptyProviderThenThrowsException() { + var embeddingRequest = generateEmbeddingRequest(EmbeddingOptionsBuilder.builder().model("test-model").build()); + + assertThatThrownBy(() -> EmbeddingModelObservationContext.builder() + .embeddingRequest(embeddingRequest) + .provider("") + .build()).isInstanceOf(IllegalArgumentException.class).hasMessage("provider cannot be null or empty"); + } + + @Test + void whenValidRequestAndProviderThenBuildsSuccessfully() { + var embeddingRequest = generateEmbeddingRequest(EmbeddingOptionsBuilder.builder().model("test-model").build()); + + var observationContext = EmbeddingModelObservationContext.builder() + .embeddingRequest(embeddingRequest) + .provider("valid-provider") + .build(); + + assertThat(observationContext).isNotNull(); + } + + @Test + void whenBuilderWithBlankProviderThenThrowsException() { + var embeddingRequest = generateEmbeddingRequest(EmbeddingOptionsBuilder.builder().model("test-model").build()); + + assertThatThrownBy(() -> EmbeddingModelObservationContext.builder() + .embeddingRequest(embeddingRequest) + .provider(" ") + .build()).isInstanceOf(IllegalArgumentException.class).hasMessage("provider cannot be null or empty"); + } + + @Test + void whenEmbeddingRequestWithNullOptionsThenBuildsSuccessfully() { + var embeddingRequest = generateEmbeddingRequest(null); + + var observationContext = EmbeddingModelObservationContext.builder() + .embeddingRequest(embeddingRequest) + .provider("test-provider") + .build(); + + assertThat(observationContext).isNotNull(); + } + + @Test + void whenEmbeddingRequestWithEmptyInputListThenBuildsSuccessfully() { + var embeddingRequest = new EmbeddingRequest(List.of(), + EmbeddingOptionsBuilder.builder().model("test-model").build()); + + var observationContext = EmbeddingModelObservationContext.builder() + .embeddingRequest(embeddingRequest) + .provider("test-provider") + .build(); + + assertThat(observationContext).isNotNull(); + } + private EmbeddingRequest generateEmbeddingRequest(EmbeddingOptions embeddingOptions) { - return new EmbeddingRequest(List.of(), embeddingOptions); + return new EmbeddingRequest(List.of("test input"), embeddingOptions); } }