Watch
1
0
Fork
You've already forked Seyyed_arc
0
forked from hesabix/arc
Seyyed_arc/hesabixAPI/tests/test_ai_language_prompt.py
2026-08-18 12:20:43 +00:00

107 lines
3.1 KiB
Python

"""تست بلوک زبان چت AI."""
from __future__ import annotations
from app.services.ai.ai_language_prompt import (
build_force_synthesis_user_content,
build_language_context_prompt_block,
detect_message_language,
normalize_language_code,
reasoning_language_mismatch,
resolve_effective_chat_language,
)
def test_normalize_language_code():
assert normalize_language_code("fa-IR") == "fa"
assert normalize_language_code("en-US") == "en"
assert normalize_language_code(None) == "fa"
def test_resolve_effective_chat_language_prefers_user_message():
assert (
resolve_effective_chat_language(
ctx_language="en-US",
preferred_language="en",
user_message="یه گزارش مالی از سه ماه گذشته بده",
)
== "fa"
)
assert (
resolve_effective_chat_language(
ctx_language="fa-IR",
preferred_language="fa",
user_message="Show me last month sales report",
)
== "en"
)
def test_resolve_effective_chat_language_prefers_memory_without_message():
assert (
resolve_effective_chat_language(
ctx_language="fa-IR",
preferred_language="en",
)
== "en"
)
assert (
resolve_effective_chat_language(
ctx_language="en-US",
preferred_language=None,
)
== "en"
)
def test_detect_message_language():
assert detect_message_language("سلام گزارش بده") == "fa"
assert detect_message_language("Show sales report") == "en"
assert detect_message_language("") is None
def test_reasoning_language_mismatch():
assert reasoning_language_mismatch(
"I will call resolve_date_range first",
"fa",
)
assert not reasoning_language_mismatch(
"ابتدا بازه تاریخ را مشخص می‌کنم",
"fa",
)
def test_force_synthesis_respects_language():
en = build_force_synthesis_user_content("en", "data")
fa = build_force_synthesis_user_content("fa", "data")
assert "English" in en
assert "فارسی" in fa
def test_build_language_context_prompt_block_fa():
block = build_language_context_prompt_block("fa")
assert "فارسی" in block
assert "پنل تحلیل" in block
def test_build_language_context_prompt_block_en():
block = build_language_context_prompt_block("en")
assert "English" in block
assert "analysis-panel" in block or "analysis panel" in block
def test_visible_reasoning_markdown_hides_english_for_fa():
from app.services.ai.ai_language_prompt import visible_reasoning_markdown
hidden = visible_reasoning_markdown(
"I will now call search_invoices to gather data",
"fa",
)
assert "search_invoices" not in hidden
assert "تحلیل" in hidden
kept = visible_reasoning_markdown(
"ابتدا بازه تاریخ را مشخص می‌کنم و سپس فاکتورها را می‌خوانم",
"fa",
)
assert "بازه تاریخ" in kept
english = visible_reasoning_markdown("Looking up invoices next", "en")
assert "Looking up" in english