File size: 1,127 Bytes
1e732dd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
"""
Tests for src/exceptions.py — domain exception hierarchy.
"""

import pytest

from src.exceptions import (
    AnalysisError,
    BiomarkerError,
    CacheError,
    DatabaseError,
    EmbeddingError,
    GuardrailError,
    LLMError,
    MediGuardError,
    ObservabilityError,
    OllamaConnectionError,
    OutOfScopeError,
    PDFParsingError,
    SearchError,
    TelegramError,
)


def test_all_exceptions_inherit_from_root():
    """Every domain exception should inherit from MediGuardError."""
    for exc_cls in [
        DatabaseError, SearchError, EmbeddingError, PDFParsingError,
        LLMError, OllamaConnectionError, BiomarkerError, AnalysisError,
        GuardrailError, OutOfScopeError, CacheError, ObservabilityError,
        TelegramError,
    ]:
        assert issubclass(exc_cls, MediGuardError), f"{exc_cls.__name__} must inherit MediGuardError"


def test_ollama_inherits_llm():
    assert issubclass(OllamaConnectionError, LLMError)


def test_exception_message():
    exc = SearchError("OpenSearch timeout")
    assert str(exc) == "OpenSearch timeout"
    assert isinstance(exc, MediGuardError)