From b8606b272c52546b352640a7276f5e97e971a09c Mon Sep 17 00:00:00 2001 From: Nguyen Son Date: Thu, 16 Jul 2026 12:34:05 +0700 Subject: [PATCH] fix(ai): restore WebClient runtime auto-configuration --- ai-service/pom.xml | 2 +- .../config/AiWebClientConfigurationTest.java | 35 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 ai-service/src/test/java/com/devhire/ai/config/AiWebClientConfigurationTest.java diff --git a/ai-service/pom.xml b/ai-service/pom.xml index 676119a..e2a705f 100644 --- a/ai-service/pom.xml +++ b/ai-service/pom.xml @@ -25,7 +25,7 @@ org.springframework.boot - spring-boot-starter-webflux + spring-boot-starter-webclient io.netty diff --git a/ai-service/src/test/java/com/devhire/ai/config/AiWebClientConfigurationTest.java b/ai-service/src/test/java/com/devhire/ai/config/AiWebClientConfigurationTest.java new file mode 100644 index 0000000..6b9cf1b --- /dev/null +++ b/ai-service/src/test/java/com/devhire/ai/config/AiWebClientConfigurationTest.java @@ -0,0 +1,35 @@ +package com.devhire.ai.config; + +import com.devhire.ai.client.AnthropicClaudeClient; +import com.devhire.ai.tool.JobSearchTool; +import org.junit.jupiter.api.Test; +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.boot.webclient.autoconfigure.WebClientAutoConfiguration; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; +import org.springframework.web.reactive.function.client.WebClient; + +import static org.assertj.core.api.Assertions.assertThat; + +class AiWebClientConfigurationTest { + + private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() + .withConfiguration(AutoConfigurations.of(WebClientAutoConfiguration.class)) + .withBean(AiProperties.class, AiProperties::new) + .withUserConfiguration(ClientConfiguration.class); + + @Test + void autoConfiguresWebClientBuilderForAiClients() { + contextRunner.run(context -> { + assertThat(context).hasSingleBean(WebClient.Builder.class); + assertThat(context).hasSingleBean(AnthropicClaudeClient.class); + assertThat(context).hasSingleBean(JobSearchTool.class); + }); + } + + @Configuration(proxyBeanMethods = false) + @Import({AnthropicClaudeClient.class, JobSearchTool.class}) + static class ClientConfiguration { + } +}