from apps.audit.models import OperationAuditLog from apps.tickets.models import Ticket def test_add_comment_to_ticket(admin_client, db): ticket = Ticket.objects.create(ticket_no="TK202606300010", title="A", description="A") response = admin_client.post( f"/api/tickets/{ticket.id}/comments", data={ "content": "Checked logs", "comment_type": "internal_note", "visibility": "internal", }, content_type="application/json", ) assert response.status_code == 200 assert response.json()["content"] == "Checked logs" assert ticket.comments.count() == 1 def test_add_attachment_to_ticket(admin_client, db): ticket = Ticket.objects.create(ticket_no="TK202606300011", title="A", description="A") response = admin_client.post( f"/api/tickets/{ticket.id}/attachments", data={ "file_name": "error.log", "mime_type": "text/plain", "file_size": 123, "storage_path": "tickets/TK202606300011/error.log", }, content_type="application/json", ) assert response.status_code == 200 assert response.json()["file_name"] == "error.log" def test_export_tickets_returns_csv_and_audit_log(admin_client, db): Ticket.objects.create(ticket_no="TK202606300012", title="Export me", description="A") response = admin_client.get("/api/tickets/export") assert response.status_code == 200 assert response["content-type"].startswith("text/csv") assert "TK202606300012" in response.content.decode() assert OperationAuditLog.objects.filter(module="tickets", action="export").exists()