from __future__ import annotations import json from django.test import SimpleTestCase from mandelblog_content_guard.agents import get_language_agent from mandelblog_content_guard.extractors.visible_text import extract_visible_rendered_text from mandelblog_content_guard.system_strings import build_system_rewrite_candidates, build_system_vocabulary from mandelblog_content_guard.validators.multilingual import validate_text_nodes class PackageLevelContentGuardTests(SimpleTestCase): def test_system_string_replacement_catalog(self): self.assertEqual(build_system_vocabulary("fr")["PLAN"], "FORFAIT") self.assertEqual(build_system_vocabulary("pt")["Unverbindlich"], "Sem compromisso") self.assertEqual(build_system_rewrite_candidates()["PLAN"], "generic_badge_label") def test_canonical_source_suppression(self): nl_issues = validate_text_nodes("nl", [("body.badge", "PLAN")]) it_issues = validate_text_nodes("it", [("body.badge", "PIANO")]) self.assertFalse(any(issue.bad_value == "PLAN" for issue in nl_issues)) self.assertFalse(any(issue.bad_value == "PIANO" for issue in it_issues)) def test_visible_text_extraction(self): html = """