feat: render real ticket event timeline

This commit is contained in:
hailin
2026-07-02 10:36:52 +08:00
parent a6df96ebb0
commit 399a5bdb73
8 changed files with 196 additions and 30 deletions

View File

@@ -127,3 +127,38 @@ def test_transition_ticket_requires_non_empty_remark(admin_client, db):
)
assert response.status_code == 400
def test_get_ticket_events_returns_real_timeline_with_operator(admin_client, db):
user_model = get_user_model()
operator = user_model.objects.get(username="admin")
ticket = Ticket.objects.create(
ticket_no="TK202607020200",
title="A",
description="A",
status="in_progress",
)
TicketEvent.objects.create(
ticket=ticket,
event_type="created",
to_value={"status": "pending"},
operator=operator,
)
TicketEvent.objects.create(
ticket=ticket,
event_type="status_change",
from_value={"status": "pending"},
to_value={"status": "in_progress"},
operator=operator,
remark="开始排查认证链路",
)
response = admin_client.get(f"/api/tickets/{ticket.id}/events")
assert response.status_code == 200
payload = response.json()
assert [event["event_type"] for event in payload] == ["created", "status_change"]
assert payload[1]["from_value"] == {"status": "pending"}
assert payload[1]["to_value"] == {"status": "in_progress"}
assert payload[1]["remark"] == "开始排查认证链路"
assert payload[1]["operator"]["display_name"] == "admin"