OmniFile-Processor / tests /test_summarizer.py
Dr. Abdulmalek
deploy: OmniFile AI Processor v4.3.0
900df0b
"""
اختبارات ملخص النصوص
"""
import pytest
import sys
from pathlib import Path
PROJECT_ROOT = Path(__file__).parent.parent.resolve()
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
class TestTextSummarizer:
"""اختبارات ملخص النصوص."""
def test_import(self):
"""اختبار استيراد الملخص."""
from modules.nlp.summarizer import TextSummarizer
assert TextSummarizer is not None
def test_initialization(self):
"""اختبار التهيئة."""
from modules.nlp.summarizer import TextSummarizer
summarizer = TextSummarizer()
assert summarizer is not None
def test_detect_language_english(self):
"""اختبار كشف اللغة الإنجليزية."""
from modules.nlp.summarizer import TextSummarizer
assert TextSummarizer._detect_language("Hello World") == "en"
def test_detect_language_arabic(self):
"""اختبار كشف اللغة العربية."""
from modules.nlp.summarizer import TextSummarizer
assert TextSummarizer._detect_language("مرحبا بالعالم") == "ar"
def test_detect_language_german(self):
"""اختبار كشف اللغة الألمانية."""
from modules.nlp.summarizer import TextSummarizer
assert TextSummarizer._detect_language("Grüß Gott") == "de"
def test_summarize_empty_text(self):
"""اختبار تلخيص نص فارغ."""
from modules.nlp.summarizer import TextSummarizer
summarizer = TextSummarizer()
result = summarizer.summarize("")
assert result["summary"] == ""
assert result["original_length"] == 0
def test_summarize_short_text(self):
"""اختبار تلخيص نص قصير (يجب أن يُرجع النص كما هو)."""
from modules.nlp.summarizer import TextSummarizer
summarizer = TextSummarizer()
short_text = "Short text."
result = summarizer.summarize(short_text)
assert result["summary"] == short_text
assert result.get("reason") == "text_too_short"
def test_summarize_returns_dict(self, sample_text_en):
"""اختبار أن summarize يعيد قاموساً."""
from modules.nlp.summarizer import TextSummarizer
summarizer = TextSummarizer()
result = summarizer.summarize(sample_text_en)
assert isinstance(result, dict)
assert "summary" in result
assert "original_length" in result
assert "summary_length" in result
assert "compression_ratio" in result
assert "language" in result
def test_summarize_detects_language(self, sample_text_ar):
"""اختبار كشف اللغة أثناء التلخيص."""
from modules.nlp.summarizer import TextSummarizer
summarizer = TextSummarizer()
result = summarizer.summarize(sample_text_ar)
assert result["language"] == "ar"
def test_get_available_models(self):
"""اختبار قائمة النماذج المتاحة."""
from modules.nlp.summarizer import TextSummarizer
summarizer = TextSummarizer()
en_models = summarizer.get_available_models("en")
assert isinstance(en_models, list)
assert len(en_models) > 0
def test_clear_cache(self):
"""اختبار مسح الكاش."""
from modules.nlp.summarizer import TextSummarizer
summarizer = TextSummarizer()
summarizer._cache = {"key": {"summary": "test"}}
summarizer.clear_cache()
assert len(summarizer._cache) == 0
def test_is_available(self):
"""اختبار فحص التوفر."""
from modules.nlp.summarizer import TextSummarizer
summarizer = TextSummarizer()
available = summarizer.is_available()
assert isinstance(available, bool)