"""Tests für die Flask-App-Factory mit fakeredis.""" from __future__ import annotations import fakeredis from flask import Flask from flask.testing import FlaskClient from src.app import create_app from src.queue.handler import QueueHandler def test_create_app_returns_flask_app() -> None: """create_app() liefert eine Flask-App-Instanz zurück.""" app = create_app() assert isinstance(app, Flask) def test_health_returns_status_ok() -> None: """GET /health liefert 200 und JSON mit status=ok.""" app = create_app() # QueueHandler mit fakeredis ersetzen fake_redis = fakeredis.FakeRedis(decode_responses=True) qh = QueueHandler.__new__(QueueHandler) qh.redis = fake_redis qh.stream_key = "bsn:submissions" qh.processed_set = "bsn:processed" qh.stream_ids_hash = "bsn:stream_ids" qh.group_name = "bsn-workers" qh._ensure_consumer_group() app.queue_handler = qh # type: ignore[attr-defined] client: FlaskClient = app.test_client() response = client.get("/health") assert response.status_code == 200 data = response.get_json() assert data is not None assert data["status"] == "ok" def test_health_queue_size_is_integer() -> None: """GET /health liefert queue_size als Integer.""" app = create_app() # QueueHandler mit fakeredis ersetzen fake_redis = fakeredis.FakeRedis(decode_responses=True) qh = QueueHandler.__new__(QueueHandler) qh.redis = fake_redis qh.stream_key = "bsn:submissions" qh.processed_set = "bsn:processed" qh.stream_ids_hash = "bsn:stream_ids" qh.group_name = "bsn-workers" qh._ensure_consumer_group() app.queue_handler = qh # type: ignore[attr-defined] client = app.test_client() response = client.get("/health") assert response.status_code == 200 data = response.get_json() assert data is not None assert isinstance(data["queue_size"], int)