bmc_hub/tests/test_sag_module.py
Christian 29acdf3e01 Add tests for new SAG module endpoints and module deactivation
- Implement test script for new SAG module endpoints BE-003 (Tag State Management) and BE-004 (Bulk Operations).
- Create test cases for creating, updating, and bulk operations on cases and tags.
- Add a test for module deactivation to ensure data integrity is maintained.
- Include setup and teardown for tests to clear database state before and after each test.
2026-01-31 23:16:24 +01:00

86 lines
2.6 KiB
Python

import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent.parent))
import pytest
from fastapi.testclient import TestClient
from app.main import app
from app.core.database import execute_query
client = TestClient(app)
@pytest.fixture(scope="function", autouse=True)
def setup_and_teardown():
"""Setup and teardown for each test."""
# Setup: Clear the database tables before each test
execute_query("DELETE FROM sag_tags;")
execute_query("DELETE FROM sag_relationer;")
execute_query("DELETE FROM sag_sager;")
yield
# Teardown: Clear the database tables after each test
execute_query("DELETE FROM sag_tags;")
execute_query("DELETE FROM sag_relationer;")
execute_query("DELETE FROM sag_sager;")
def test_create_case():
"""Test creating a new case."""
response = client.post("/api/v1/cases", json={
"titel": "Test Case",
"beskrivelse": "This is a test case.",
"template_key": "ticket",
"status": "åben",
"customer_id": 1,
"ansvarlig_bruger_id": 2,
"created_by_user_id": 3,
"deadline": "2026-02-01T12:00:00"
})
assert response.status_code == 200
data = response.json()
assert data["titel"] == "Test Case"
assert data["status"] == "åben"
def test_list_cases():
"""Test listing cases."""
# Create a case
client.post("/api/v1/cases", json={
"titel": "Test Case",
"beskrivelse": "This is a test case.",
"template_key": "ticket",
"status": "åben",
"customer_id": 1,
"ansvarlig_bruger_id": 2,
"created_by_user_id": 3,
"deadline": "2026-02-01T12:00:00"
})
# List cases
response = client.get("/api/v1/cases")
assert response.status_code == 200
data = response.json()
assert len(data) == 1
assert data[0]["titel"] == "Test Case"
def test_soft_delete_case():
"""Test soft-deleting a case."""
# Create a case
response = client.post("/api/v1/cases", json={
"titel": "Test Case",
"beskrivelse": "This is a test case.",
"template_key": "ticket",
"status": "åben",
"customer_id": 1,
"ansvarlig_bruger_id": 2,
"created_by_user_id": 3,
"deadline": "2026-02-01T12:00:00"
})
case_id = response.json()["id"]
# Soft-delete the case
delete_response = client.delete(f"/api/v1/cases/{case_id}")
assert delete_response.status_code == 200
# Verify the case is soft-deleted
list_response = client.get("/api/v1/cases")
assert list_response.status_code == 200
data = list_response.json()
assert len(data) == 0