Files
Qt_DesktopPet/internal/qa/tests/web/WebCapabilityTests.cpp
T

66 lines
2.4 KiB
C++

#include "TestHarness.h"
#include "src/config/AIConfig.h"
#include "src/web/WebCapabilityDetector.h"
namespace
{
AIConfig completeConfig(const QString &provider)
{
AIConfig config = defaultAIConfigForProvider(provider);
config.model = QStringLiteral("test-model");
config.apiKey = QStringLiteral("test-key-not-a-real-secret");
return config;
}
}
QA_TEST(WebCapability, RespectsGlobalDisable)
{
WebConfig webConfig;
webConfig.enabled = false;
const WebCapability capability = WebCapabilityDetector::detect(completeConfig(QStringLiteral("openai")), webConfig);
QA_EXPECT(!capability.supported);
QA_EXPECT(capability.statusText.contains(QStringLiteral("已关闭")));
}
QA_TEST(WebCapability, AcceptsOfficialOpenAI)
{
const WebCapability capability = WebCapabilityDetector::detect(completeConfig(QStringLiteral("openai")));
QA_EXPECT(capability.supported);
QA_EXPECT_EQ(capability.kind, WebProviderKind::OpenAIResponses);
}
QA_TEST(WebCapability, RejectsThirdPartyOpenAIBaseUrl)
{
AIConfig config = completeConfig(QStringLiteral("openai"));
config.baseUrl = QStringLiteral("https://relay.example.com/v1");
const WebCapability capability = WebCapabilityDetector::detect(config);
QA_EXPECT(!capability.supported);
QA_EXPECT(capability.userMessage.contains(QStringLiteral("api.openai.com")));
}
QA_TEST(WebCapability, AcceptsGeminiProtocol)
{
const WebCapability capability = WebCapabilityDetector::detect(completeConfig(QStringLiteral("google")));
QA_EXPECT(capability.supported);
QA_EXPECT_EQ(capability.kind, WebProviderKind::GeminiGrounding);
}
QA_TEST(WebCapability, RejectsDeepSeekAndCustomProviders)
{
const WebCapability deepSeek = WebCapabilityDetector::detect(completeConfig(QStringLiteral("deepseek")));
const WebCapability custom = WebCapabilityDetector::detect(completeConfig(QStringLiteral("custom")));
QA_EXPECT(!deepSeek.supported);
QA_EXPECT(deepSeek.statusText.contains(QStringLiteral("DeepSeek")));
QA_EXPECT(!custom.supported);
QA_EXPECT(custom.statusText.contains(QStringLiteral("无法确认")));
}
QA_TEST(WebCapability, RequiresCompleteConfiguration)
{
AIConfig config = defaultAIConfigForProvider(QStringLiteral("openai"));
const WebCapability capability = WebCapabilityDetector::detect(config);
QA_EXPECT(!capability.supported);
QA_EXPECT(capability.statusText.contains(QStringLiteral("未配置完整")));
}