package com.zy.ai.gateway;
|
|
import com.zy.ai.entity.LlmRouteConfig;
|
import com.zy.ai.gateway.adapter.AiProviderAdapter;
|
import com.zy.ai.gateway.adapter.AiProviderAdapterRegistry;
|
import com.zy.ai.gateway.model.AiRequest;
|
import com.zy.ai.gateway.model.AiResponse;
|
import com.zy.ai.gateway.model.AiStreamEvent;
|
import org.junit.jupiter.api.Test;
|
import reactor.core.publisher.Flux;
|
|
import java.util.List;
|
import java.util.Optional;
|
|
import static org.junit.jupiter.api.Assertions.assertSame;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
class AiProviderAdapterRegistryTest {
|
|
@Test
|
void findAdapterReturnsFirstSupportedAdapter() {
|
AiProviderAdapter unsupportedAdapter = new FixedSupportAdapter(false);
|
AiProviderAdapter supportedAdapter = new FixedSupportAdapter(true);
|
AiProviderAdapterRegistry registry = new AiProviderAdapterRegistry(List.of(
|
unsupportedAdapter,
|
supportedAdapter
|
));
|
|
Optional<AiProviderAdapter> adapter = registry.findAdapter(new LlmRouteConfig(), new AiRequest());
|
|
assertTrue(adapter.isPresent());
|
assertSame(supportedAdapter, adapter.get());
|
}
|
|
@Test
|
void findAdapterReturnsEmptyWhenNoAdapterMatches() {
|
AiProviderAdapterRegistry registry = new AiProviderAdapterRegistry(List.of(
|
new FixedSupportAdapter(false)
|
));
|
|
Optional<AiProviderAdapter> adapter = registry.findAdapter(new LlmRouteConfig(), new AiRequest());
|
|
assertTrue(adapter.isEmpty());
|
}
|
|
private static class FixedSupportAdapter implements AiProviderAdapter {
|
|
private final boolean supported;
|
|
private FixedSupportAdapter(boolean supported) {
|
this.supported = supported;
|
}
|
|
@Override
|
public boolean supports(LlmRouteConfig routeConfig, AiRequest request) {
|
return supported;
|
}
|
|
@Override
|
public AiResponse generate(LlmRouteConfig routeConfig, AiRequest request) {
|
return new AiResponse();
|
}
|
|
@Override
|
public Flux<AiStreamEvent> stream(LlmRouteConfig routeConfig, AiRequest request) {
|
return Flux.empty();
|
}
|
}
|
}
|