"""Queue integration: quality thresholds should be configurable from settings.""" from __future__ import annotations from pathlib import Path from core import queue from core.config import Settings from core.schemas import ImageMeta, ImageStatus def test_process_and_store_respects_quality_threshold_settings( monkeypatch, tmp_path: Path ) -> None: image = tmp_path / "sample.jpg" image.write_bytes(b"fake") meta = ImageMeta(id="img_cfg", filename="sample.jpg") statuses: list[ImageStatus] = [] monkeypatch.setattr(queue.storage, "get_image", lambda image_id: meta) monkeypatch.setattr(queue.storage, "original_path", lambda image_id: str(image)) monkeypatch.setattr( queue.storage, "set_status", lambda image_id, status: statuses.append(status) ) assessed: dict[str, float] = {} class _Report: ok = False def fake_assess( path: str, *, min_side: int, blur_threshold: float, dark: float, bright: float ): assessed.update( { "min_side": min_side, "blur_threshold": blur_threshold, "dark": dark, "bright": bright, } ) return _Report() monkeypatch.setattr(queue.quality, "assess", fake_assess) monkeypatch.setattr( queue, "get_settings", lambda: Settings( quality_min_side=80, quality_blur_threshold=7.5, quality_dark_threshold=10.0, quality_bright_threshold=250.0, ), ) queue.process_and_store("img_cfg") assert assessed == { "min_side": 80, "blur_threshold": 7.5, "dark": 10.0, "bright": 250.0, } assert statuses == [ImageStatus.processing, ImageStatus.undeterminable]