from app.utils.pdf_ocr import is_likely_scanned
from app.utils.quiet_hours import is_quiet_hours


def test_is_likely_scanned_sparse_text():
    pages = [{"page": 1, "text": "ab"}, {"page": 2, "text": ""}]
    assert is_likely_scanned(pages) is True


def test_is_likely_scanned_rich_text():
    pages = [{"page": 1, "text": "Insured MR RAMESH " * 20}]
    assert is_likely_scanned(pages) is False


def test_quiet_hours_evening():
    from datetime import datetime
    from zoneinfo import ZoneInfo

    evening = datetime(2026, 6, 26, 22, 0, tzinfo=ZoneInfo("Asia/Kolkata"))
    assert is_quiet_hours(evening) is True


def test_quiet_hours_morning_work_hours():
    from datetime import datetime
    from zoneinfo import ZoneInfo

    morning = datetime(2026, 6, 26, 10, 0, tzinfo=ZoneInfo("Asia/Kolkata"))
    assert is_quiet_hours(morning) is False


def test_preprocess_image_for_ocr():
    from PIL import Image

    from app.utils.pdf_image_preprocess import preprocess_image_for_ocr

    image = Image.new("RGB", (120, 60), color="white")
    processed = preprocess_image_for_ocr(image)
    assert processed is not None
    assert processed.size == image.size


def test_ocr_engine_label():
    from app.utils.pdf_ocr import ocr_engine_label

    assert ocr_engine_label("tesseract") == "tesseract+opencv"
    assert ocr_engine_label("fitz") == "fitz"
