bmc_hub/tests/test_bankruptcy_workflow.py
Christian 56cc1bdcc4 feat: Enhance AnyDesk integration and vendor email domain management
- Updated the AnyDesk quick connect modal to improve user experience with new UI elements and functionality.
- Added support for saving and managing multiple AnyDesk IDs associated with cases, including hardware and contact information.
- Implemented backend endpoints for managing vendor email domains, allowing addition, deletion, and retrieval of domains linked to vendors.
- Created a new database table for vendor email domains to support multiple exact domains per vendor.
- Added tests for bankruptcy workflow to ensure correct case creation and alert linking based on exact CVR matches.
2026-07-30 20:11:43 +02:00

67 lines
2.4 KiB
Python

import asyncio
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
from app.services import email_workflow_service as workflow_module
def test_bankruptcy_exact_cvr_creates_case_alert_and_links_email(monkeypatch):
queries = []
updates = []
def fake_query(sql, params=()):
queries.append((sql, params))
if "FROM customers" in sql:
return [{"id": 42, "name": "Testkunde ApS", "cvr_number": "12345678"}]
if "FROM sag_sager s" in sql:
return []
if "INSERT INTO sag_sager" in sql:
return [{"id": 700, "titel": "KONKURSVARSEL", "customer_id": 42}]
if "SELECT id FROM alert_notes" in sql:
return []
if "INSERT INTO alert_notes" in sql:
return [{"id": 900}]
return []
monkeypatch.setattr(workflow_module, "execute_query", fake_query)
monkeypatch.setattr(
workflow_module,
"execute_update",
lambda sql, params=(): updates.append((sql, params)) or 1,
)
service = workflow_module.EmailWorkflowService()
monkeypatch.setattr(service, "_add_helpdesk_comment", lambda *args: None)
monkeypatch.setattr(service, "_link_email_to_sag", lambda *args: None)
result = asyncio.run(service._handle_bankruptcy_analysis({
"id": 55,
"subject": "Konkursdekret",
"body_text": "Vedrørende CVR-nr.: 12345678",
"body_html": "",
"sender_email": "statstidende@example.dk",
}))
assert result["action"] == "created_bankruptcy_cases_and_alerts"
assert result["customer_ids"] == [42]
assert result["sag_ids"] == [700]
assert result["alert_note_ids"] == [900]
assert any("linked_case_id" in sql for sql, _ in updates)
assert any("INSERT INTO alert_notes" in sql for sql, _ in queries)
def test_bankruptcy_without_explicit_cvr_does_nothing(monkeypatch):
monkeypatch.setattr(
workflow_module,
"execute_query",
lambda *args, **kwargs: (_ for _ in ()).throw(AssertionError("DB må ikke kaldes")),
)
service = workflow_module.EmailWorkflowService()
result = asyncio.run(service._handle_bankruptcy_analysis({
"id": 56,
"subject": "Mulig konkurs",
"body_text": "Ingen CVR-oplysning i teksten",
"body_html": "",
}))
assert result == {"status": "skipped", "reason": "no_cvr_found"}