Files
clawfort/tests/test_p16_translation_and_refetch.py
Santhosh Janardhanan 679561bcdb
Some checks failed
quality-gates / lint-and-test (push) Has been cancelled
quality-gates / security-scan (push) Has been cancelled
First deployment
2026-02-13 09:14:04 -05:00

72 lines
3.0 KiB
Python

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"