Add admin issue deletion workflow
Magent CI/CD / verify (push) Successful in 10m47s
Magent CI/CD / deploy-prod (push) Skipped
Magent CI/CD / deploy-beta (push) Successful in 22s

This commit is contained in:
2026-09-01 14:58:58 +12:00
parent 16876e1cf0
commit 5de14b1cb7
5 changed files with 234 additions and 3 deletions
+70
View File
@@ -1682,6 +1682,76 @@ class PortalWorkflowTests(TempDatabaseMixin, unittest.TestCase):
self.assertEqual(pending_count, 1)
class PortalIssueDeletionTests(TempDatabaseMixin, unittest.IsolatedAsyncioTestCase):
def _create_issue(self) -> dict:
issue = db.create_portal_item(
kind="issue",
title="Delete this issue",
description="No longer required",
created_by_username="reporter",
created_by_id=None,
issue_type="playback",
)
db.add_portal_comment(
int(issue["id"]),
author_username="reporter",
author_role="user",
message="Issue detail",
)
db.add_portal_item_activity(
int(issue["id"]),
event_type="item_created",
actor_username="reporter",
actor_role="user",
message="Issue created",
)
return issue
async def test_only_admin_can_delete_an_issue(self) -> None:
issue = self._create_issue()
with self.assertRaises(HTTPException) as context:
await portal_router.portal_delete_item(
int(issue["id"]),
current_user={"username": "reporter", "role": "user"},
)
self.assertEqual(context.exception.status_code, 403)
self.assertIsNotNone(db.get_portal_item(int(issue["id"])))
async def test_delete_issue_removes_its_comments_and_activity(self) -> None:
issue = self._create_issue()
issue_id = int(issue["id"])
result = await portal_router.portal_delete_item(
issue_id,
current_user={"username": "admin", "role": "admin"},
)
self.assertEqual(result, {"status": "deleted", "item_id": issue_id})
self.assertIsNone(db.get_portal_item(issue_id))
self.assertEqual(db.list_portal_comments(issue_id), [])
self.assertEqual(db.list_portal_item_activity(issue_id), [])
async def test_delete_endpoint_will_not_delete_a_request(self) -> None:
request_item = db.create_portal_item(
kind="request",
title="Keep this request",
description="The media workflow must remain intact",
created_by_username="reporter",
created_by_id=None,
)
with self.assertRaises(HTTPException) as context:
await portal_router.portal_delete_item(
int(request_item["id"]),
current_user={"username": "admin", "role": "admin"},
)
self.assertEqual(context.exception.status_code, 400)
self.assertIsNotNone(db.get_portal_item(int(request_item["id"])))
class IssueResolutionWorkflowTests(TempDatabaseMixin, unittest.IsolatedAsyncioTestCase):
def _create_issue(self, *, status: str = "in_progress") -> dict:
return db.create_portal_item(