First deployment
This commit is contained in:
71
tests/test_p16_translation_and_refetch.py
Normal file
71
tests/test_p16_translation_and_refetch.py
Normal file
@@ -0,0 +1,71 @@
|
||||
import pytest
|
||||
|
||||
from backend.cli import is_unrelated_image_candidate, resolve_article_id_from_permalink
|
||||
from backend.news_service import (
|
||||
GENERIC_FINANCE_FALLBACK_URL,
|
||||
fetch_royalty_free_image,
|
||||
validate_translation_quality,
|
||||
)
|
||||
|
||||
|
||||
def test_permalink_resolution_supports_numeric_and_query_formats():
|
||||
assert resolve_article_id_from_permalink("123") == 123
|
||||
assert resolve_article_id_from_permalink("/?article=456") == 456
|
||||
assert resolve_article_id_from_permalink("https://x.test/?article=789") == 789
|
||||
assert resolve_article_id_from_permalink("bad") is None
|
||||
|
||||
|
||||
def test_unrelated_image_candidate_filters_pet_terms():
|
||||
assert is_unrelated_image_candidate("https://img.example.com/cat-photo.jpg", "Example")
|
||||
assert is_unrelated_image_candidate("https://img.example.com/market.jpg", "Wildlife digest")
|
||||
assert not is_unrelated_image_candidate(
|
||||
"https://img.example.com/nasdaq-chart.jpg", "Market Desk"
|
||||
)
|
||||
|
||||
|
||||
def test_translation_quality_validation_accepts_valid_tamil_and_malayalam():
|
||||
ta_ok, ta_reason = validate_translation_quality(
|
||||
"ஏஐ முதலீட்டில் சந்தை ஏற்றம்",
|
||||
"ஏஐ சார்ந்த முதலீட்டு செய்திகளால் இந்திய சந்தையில் உயர்வு ஏற்பட்டது.",
|
||||
"ta",
|
||||
)
|
||||
ml_ok, ml_reason = validate_translation_quality(
|
||||
"എഐ നിക്ഷേപ വാർത്തകൾ വിപണിയെ ഉയർത്തി",
|
||||
"എഐ കേന്ദ്രിത സാമ്പത്തിക റിപ്പോർട്ടുകൾ മൂലം മാർക്കറ്റ് മുന്നേറ്റം രേഖപ്പെടുത്തി.",
|
||||
"ml",
|
||||
)
|
||||
assert ta_ok and ta_reason is None
|
||||
assert ml_ok and ml_reason is None
|
||||
|
||||
|
||||
def test_translation_quality_validation_rejects_script_mismatch_and_gibberish():
|
||||
mismatch_ok, mismatch_reason = validate_translation_quality(
|
||||
"AI market rally",
|
||||
"Stocks up after AI earnings beat expectations.",
|
||||
"ta",
|
||||
)
|
||||
gibberish_ok, gibberish_reason = validate_translation_quality(
|
||||
"aaaaaaaabbbbbbbb",
|
||||
"xxxxxxxxyyyyyyyy",
|
||||
"ml",
|
||||
)
|
||||
assert not mismatch_ok
|
||||
assert mismatch_reason == "script-mismatch"
|
||||
assert not gibberish_ok
|
||||
assert gibberish_reason in {"repeated-sequence", "script-mismatch"}
|
||||
|
||||
|
||||
@pytest.mark.anyio
|
||||
async def test_finance_refetch_guard_rejects_pet_image_and_uses_finance_fallback(monkeypatch):
|
||||
async def fake_provider(_query: str):
|
||||
return "https://example.com/cat-on-wall-street.jpg", "cat photo"
|
||||
|
||||
monkeypatch.setattr(
|
||||
"backend.news_service.get_enabled_providers",
|
||||
lambda: [("fake", fake_provider)],
|
||||
)
|
||||
monkeypatch.setattr("backend.config.ROYALTY_IMAGE_MCP_ENDPOINT", "")
|
||||
|
||||
image_url, credit = await fetch_royalty_free_image("stock market rally and earnings")
|
||||
assert image_url == GENERIC_FINANCE_FALLBACK_URL
|
||||
assert credit == "Finance-safe fallback"
|
||||
Reference in New Issue
Block a user