"""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