Spaces:
Running
Running
| from __future__ import annotations | |
| from app.models.types import Language | |
| from app.services import language | |
| def test_detect_language_uses_indonesian_lexical_hints_before_fasttext(monkeypatch): | |
| monkeypatch.setattr( | |
| language, | |
| "_ensure_model", | |
| lambda: (_ for _ in ()).throw(AssertionError("fasttext should not be loaded")), | |
| ) | |
| assert ( | |
| language.detect_language("berapa batas berat bagasi kabin?") | |
| == Language.ID | |
| ) | |
| assert ( | |
| language.detect_language( | |
| "jelaskan ketentuan PM 89 Tahun 2015 tentang keterlambatan penerbangan" | |
| ) | |
| == Language.ID | |
| ) | |
| def test_detect_language_uses_english_lexical_hints_before_fasttext(monkeypatch): | |
| monkeypatch.setattr( | |
| language, | |
| "_ensure_model", | |
| lambda: (_ for _ in ()).throw(AssertionError("fasttext should not be loaded")), | |
| ) | |
| assert language.detect_language("what is the cabin baggage limit?") == Language.EN | |
| def test_detect_language_falls_back_to_fasttext_when_lexical_hints_are_weak( | |
| monkeypatch, | |
| ): | |
| class FakeModel: | |
| def predict(self, text, k=2): | |
| return (("__label__id", "__label__en"), (0.9, 0.1)) | |
| monkeypatch.setattr(language, "_ensure_model", lambda: FakeModel()) | |
| assert language.detect_language("operasional") == Language.ID | |