classifier-general / tests /test_language_service.py
AyoubChLin's picture
feat: update classifier model to local zero-shot NLI and enhance language detection with local library
2d0ef3b
import pytest
from app.core.exceptions import LanguageDetectionError
import app.services.language_service as language_module
def test_detect_language_returns_en_for_english_and_non_en_for_french():
service = language_module.LanguageService()
english_text = "This is a detailed English sentence about technology trends and financial markets."
french_text = "Ceci est une phrase francaise detaillee sur les tendances technologiques et les marches financiers."
assert service.detect_language(english_text) == "en"
assert service.detect_language(french_text) != "en"
def test_detect_language_raises_for_invalid_detector_output(monkeypatch):
service = language_module.LanguageService()
monkeypatch.setattr(language_module, "detect", lambda text: "")
with pytest.raises(LanguageDetectionError, match="did not return a valid label"):
service.detect_language("This text is long enough for language detection.")
def test_detect_language_wraps_unexpected_detector_errors(monkeypatch):
service = language_module.LanguageService()
def _raise_error(_: str):
raise RuntimeError("unexpected detector failure")
monkeypatch.setattr(language_module, "detect", _raise_error)
with pytest.raises(LanguageDetectionError, match="unexpected error"):
service.detect_language("This text is long enough for language detection.")