63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
"""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)
|