Files
HartOMat/backend/tests/domains/test_notifications_service.py
T

54 lines
1.8 KiB
Python

"""Tests for notification config service."""
import pytest
from sqlalchemy import select
from app.domains.notifications.models import AuditLog
from app.domains.notifications.service import (
emit_notification,
upsert_notification_config,
get_notification_configs,
)
@pytest.mark.asyncio
async def test_upsert_creates_config(db, admin_user):
"""Kann Notification-Config anlegen."""
await upsert_notification_config(db, admin_user.id, "render_complete", "in_app", True)
configs = await get_notification_configs(db, admin_user.id)
assert len(configs) >= 1
render_cfg = next((c for c in configs if c.event_type == "render_complete"), None)
assert render_cfg is not None
@pytest.mark.asyncio
async def test_upsert_updates_existing(db, admin_user):
"""Update überschreibt bestehende Config."""
await upsert_notification_config(db, admin_user.id, "order_submitted", "in_app", True)
await upsert_notification_config(db, admin_user.id, "order_submitted", "in_app", False)
configs = await get_notification_configs(db, admin_user.id)
cfg = next((c for c in configs if c.event_type == "order_submitted"), None)
assert cfg is not None
assert cfg.enabled is False
@pytest.mark.asyncio
async def test_emit_notification_persists_naive_utc_timestamp(db, admin_user):
"""Notification writes must match the legacy naive Postgres timestamp columns."""
await emit_notification(
db,
actor_user_id=admin_user.id,
target_user_id=admin_user.id,
action="order.submitted",
entity_type="order",
entity_id="order-123",
details={"order_number": "SA-2026-00001"},
)
row = (
await db.execute(
select(AuditLog).where(AuditLog.action == "order.submitted")
)
).scalar_one()
assert row.timestamp.tzinfo is None