Files
ewoooc/tests/test_ai_routes_ollama_first.py
OoO eb521fd6d8
All checks were successful
CD Pipeline / deploy (push) Successful in 1m3s
V10.615 AI 推薦頁 Ollama 主路徑文案
2026-06-16 10:16:23 +08:00

59 lines
1.7 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""AI recommendation route Ollama-first display contract."""
def _client(monkeypatch):
from flask import Flask
import auth
from routes.ai_routes import ai_bp
monkeypatch.setattr(auth, "DISABLE_LOGIN", True)
app = Flask(__name__)
app.secret_key = "test"
app.register_blueprint(ai_bp)
return app.test_client()
def test_initial_ai_status_sanitizes_cached_gemini_recommendation(monkeypatch):
import routes.ai_routes as ai_routes
monkeypatch.setattr(
ai_routes.ai_provider_service,
"_status_cache",
{
"data": {
"default_provider": "gemini",
"recommended_provider": "gemini",
"ollama": {"connected": None},
"gemini": {"connected": True},
}
},
)
status = ai_routes._get_ai_status_for_initial_render()
assert status["default_provider"] == "ollama"
assert status["recommended_provider"] == "ollama"
def test_initial_ai_status_never_recommends_gemini_without_cache(monkeypatch):
import routes.ai_routes as ai_routes
class FakeProvider:
default_provider = "gemini"
_status_cache = {}
monkeypatch.setattr(ai_routes, "ai_provider_service", FakeProvider())
status = ai_routes._get_ai_status_for_initial_render()
assert status["default_provider"] == "ollama"
assert status["recommended_provider"] == "ollama"
def test_set_provider_error_uses_ollama_primary_wording(monkeypatch):
client = _client(monkeypatch)
response = client.post("/api/ai/set_provider", json={"provider": "other"})
assert response.status_code == 400
assert response.get_json()["error"] == "無效的提供者,請使用 Ollama 主路徑"