Skip to content

Test Cases: Helpdesk

ModuleCORE-13URDHelpdesk URD

NOTE

Module status is In-progress and the backend does not currently build, so these are planned/designed test cases — none have been executed against a running service. They define the verification target for when the build is repaired.

1. Coverage Summary

AreaURD reqsTest casesCovered
Ticket Management (TKT)1217
Ticket Messages (MSG)56
Categories, Tags & Priorities (CAT)57⚠️
SLA Management (SLA)109⚠️
Agent Management (AGT)1012⚠️
Knowledge Base (KB)77⚠️
Surveys & Feedback (SRV)65⚠️
Feature Requests (FR)55⚠️
Compensation (CMP)44⚠️
Notifications (NTF)55⚠️
Access Control (cross-cutting)4

⚠️ flags areas where at least one Must requirement has no test case — see §3 Traceability.

2. Test Cases

TC-<AREA>-NNN lines up with URD-<AREA>-NNN. Priority = P1 (critical) / P2 (major) / P3 (minor).

TC IDURD refScenarioStepsExpectedP
TC-TKT-001URD-TKT-001Create ticket1. As customer, create ticket with subject, description, category, priority MediumTicket saved as OPEN; merchant set; SLA tracker created with first-response deadlineP1
TC-TKT-002URD-TKT-002Merchant scoping1. Customer of Merchant A creates a ticketTicket scoped to Merchant A; Merchant B agents cannot see itP1
TC-TKT-003URD-TKT-003Agent-raised ticket1. Agent creates a ticket on behalf of a customerTicket saved; reporter type = agentP1
TC-TKT-004URD-TKT-001Missing subject (negative)1. Create ticket with no subjectRejected; validation error for missing subjectP1
TC-TKT-005URD-TKT-001Invalid category (negative)1. Create ticket with invalid categoryRejected; error indicates invalid categoryP1
TC-TKT-006URD-TKT-004OPEN → ASSIGNED1. Assign an OPEN ticket to an agentStatus → ASSIGNED; assignee and time recordedP1
TC-TKT-007URD-TKT-004ASSIGNED → IN_PROGRESS1. Agent sends first replyStatus → IN_PROGRESS; first-response time recordedP1
TC-TKT-008URD-TKT-004IN_PROGRESS → WAITING_USER1. Agent sets waiting-on-customerStatus → WAITING_USER; customer notifiedP1
TC-TKT-009URD-TKT-004WAITING_USER → IN_PROGRESS1. Customer repliesStatus → IN_PROGRESS; SLA clock updatedP1
TC-TKT-010URD-TKT-004IN_PROGRESS → RESOLVED1. Agent marks resolved with noteStatus → RESOLVED; resolution details savedP1
TC-TKT-011URD-TKT-010RESOLVED → CLOSED (confirm)1. Customer confirms resolutionStatus → CLOSED; closure details recordedP1
TC-TKT-012URD-TKT-010Auto-close after 48h1. Resolved ticket; 48h pass with no responseStatus → CLOSED; system message explains auto-closeP2
TC-TKT-013URD-TKT-009Re-open on reply1. Customer replies after RESOLVEDStatus → IN_PROGRESS (re-opened); event loggedP2
TC-TKT-014URD-TKT-004Terminal state (negative)1. Attempt CLOSED → IN_PROGRESSRejected; CLOSED is terminalP1
TC-TKT-015URD-TKT-004Invalid transition (negative)1. Attempt OPEN → RESOLVED directlyRejected; invalid transitionP1
TC-TKT-016URD-TKT-008Audit trail1. Move ticket through full lifecycle 2. View eventsAll transitions logged with actor, from/to status, timestampP1
TC-TKT-017URD-TKT-012Soft-delete1. Delete a ticket 2. Query active ticketsTicket excluded from active queries; deletion timestamp setP1
TC-MSG-001URD-MSG-001Customer reply1. Customer sends a replyMessage type = customer reply; agent notifiedP1
TC-MSG-002URD-MSG-001Agent reply1. Agent sends a replyMessage type = agent reply; first-response time updated if firstP1
TC-MSG-003URD-MSG-002Internal note hidden1. Agent adds internal note 2. Customer queries messagesInternal note not returned to customerP1
TC-MSG-004URD-MSG-002Note by non-agent (negative)1. Customer attempts to add an internal noteRejected; only agents may add internal notesP1
TC-MSG-005URD-MSG-003Attachments1. Agent replies with 2 attachmentsAttachments stored and returned in message detailsP2
TC-MSG-006URD-MSG-005System message on transition1. Trigger a state transitionSystem message auto-appended with transition detailP2
TC-CAT-001URD-CAT-001Create category1. Create category "Billing" with default priority HighCategory saved; slug uniqueP1
TC-CAT-002URD-CAT-001Duplicate slug (negative)1. Create second category with same slugRejected; unique slug constraintP1
TC-CAT-003URD-CAT-001Sub-category1. Create "Refund" under "Billing"Sub-category saved with parent setP2
TC-CAT-004URD-CAT-002Category SLA override1. Category has its own SLA policy 2. Create ticket in itTracker uses category SLA, not global defaultP2
TC-CAT-005URD-CAT-003Create tag1. Create tag "urgent"Tag available for ticketsP1
TC-CAT-006URD-CAT-004Add tag to ticket1. Agent adds "urgent" to a ticketTag mapping createdP2
TC-CAT-007URD-CAT-004Remove tag1. Agent removes the tagTag mapping removedP2
TC-SLA-001URD-SLA-001Create SLA policy1. Create policy (response 60m, resolution 480m)Saved; warning defaults 75%, critical 90%P1
TC-SLA-002URD-SLA-001Zero response time (negative)1. Create policy with response time 0Rejected; response time must be > 0P1
TC-SLA-003URD-SLA-003Business-hours clock1. Policy business-hours-only 2. Ticket created Saturday 20:00SLA clock counts only business hoursP2
TC-SLA-004URD-SLA-004Tracker on creation1. Create ticket under a policyTracker created; deadlines = created-at + policy timesP1
TC-SLA-005URD-SLA-006First-response recorded1. Agent replies at T+30mFirst-response time recorded; status OKP1
TC-SLA-006URD-SLA-005Warning threshold1. 75% of response time elapsed, no reply 2. Monitor runsSLA status = warning; agent notifiedP1
TC-SLA-007URD-SLA-005Breach + L1 escalation1. Deadline elapsed, no reply 2. Monitor runsStatus = breached; L1 escalation createdP1
TC-SLA-008URD-SLA-007L1 → L2 escalation1. L1 threshold elapsed 2. Monitor runsL2 escalation created; manager notifiedP1
TC-SLA-009URD-SLA-008Manual escalation1. Manager manually escalatesEscalation type = manual; status → ESCALATEDP2
TC-AGT-001URD-AGT-001Create agent1. Create agent for a userProfile saved; status offline; availableP1
TC-AGT-002URD-AGT-001Duplicate agent (negative)1. Create second agent for same userRejected; one agent per userP1
TC-AGT-003URD-AGT-002Set availability1. Agent sets status onlineStatus online; eligible for assignmentP1
TC-AGT-004URD-AGT-003Skills + cap1. Set skills and max concurrent ticketsFields saved; used by skill-based routingP2
TC-AGT-005URD-AGT-010Workload cap1. Agent at max tickets 2. Auto-assignment runsAgent skipped; next eligible chosenP1
TC-AGT-006URD-AGT-004Create group1. Create "Billing Team" and add two agentsGroup created; both members savedP1
TC-AGT-007URD-AGT-004Remove from group1. Remove an agent from the groupMembership removed (soft-deleted)P1
TC-AGT-008URD-AGT-006Round-robin routing1. Three tickets arrive in sequenceAssigned in rotation A → B → AP1
TC-AGT-009URD-AGT-006Skill-based routing1. Category requires "billing" 2. Auto-assignOnly billing-skilled agents considered; lowest load winsP1
TC-AGT-010URD-AGT-006Load-balanced routing1. Multiple agents availableAgent with lowest current load selectedP2
TC-AGT-011URD-AGT-007Auto-assign timing1. Ticket arrives with rule configuredAssigned within 2 minutes; status → ASSIGNEDP1
TC-AGT-012URD-AGT-007No agents available1. All agents offline/at maxTicket stays OPEN; manager notifiedP1
TC-KB-001URD-KB-001Create article1. Create draft articleSaved; counts at zeroP2
TC-KB-002URD-KB-002Publish1. Publish a draftStatus → published; published-at recordedP2
TC-KB-003URD-KB-002Archive1. Archive a published articleStatus → archived; excluded from public searchP2
TC-KB-004URD-KB-003Duplicate slug (negative)1. Create second article with same slugRejected; slug globally uniqueP2
TC-KB-005URD-KB-004View tracking1. Customer views an articleView recorded; view count incrementedP3
TC-KB-006URD-KB-006Helpful feedback1. Submit "helpful"Feedback saved; helpful count +1P3
TC-KB-007URD-KB-006Not-helpful feedback1. Submit "not helpful"Feedback saved; not-helpful count +1P3
TC-SRV-001URD-SRV-001Create CSAT survey1. Create active CSAT survey, trigger post-resolutionSurvey saved with type and triggerP2
TC-SRV-002URD-SRV-003Add questions1. Add 3 questionsQuestions saved; order preservedP2
TC-SRV-003URD-SRV-004Auto-send on resolution1. Resolve ticket with active surveySurvey sent to reporter; response initializedP2
TC-SRV-004URD-SRV-005Submit response1. Customer submits rating and commentResponse saved; linked to ticket and surveyP2
TC-SRV-005URD-SRV-004No active survey1. Resolve ticket with no active surveyNo survey triggeredP2
TC-FR-001URD-FR-001Submit feature request1. Customer submits a requestCreated; status submitted; votes zeroP2
TC-FR-002URD-FR-003Vote1. Customer votes on a requestVote recorded; count +1P2
TC-FR-003URD-FR-003Duplicate vote (negative)1. Same customer votes againRejected; one vote per customerP2
TC-FR-004URD-FR-003Unvote1. Customer who voted unvotesVote removed; count −1P2
TC-FR-005URD-FR-002Status change1. Admin moves request to plannedStatus → planned persistedP2
TC-CMP-001URD-CMP-001Issue on breach1. Breach exists 2. Agent issues store creditCompensation created (pending); linked to ticket + escalationP2
TC-CMP-002URD-CMP-002Compensation type1. Agent issues a voucher with amountSaved with correct type and amountP2
TC-CMP-003URD-CMP-003Completion1. Pending compensation processedStatus → completed; completed-at recordedP2
TC-CMP-004URD-CMP-003Expiry1. Pending compensation not processed in timeStatus → expiredP2
TC-NTF-001URD-NTF-001Real-time to agent1. Ticket assigned to a connected agentAgent receives live event with ticket detailP1
TC-NTF-002URD-NTF-001Real-time to customer1. Agent replies; customer connectedCustomer receives live reply notificationP1
TC-NTF-003URD-NTF-002Email on creation1. Ticket created with email enabledEmail sent to reporter with ticket referenceP2
TC-NTF-004URD-NTF-003Preference opt-out1. Customer opted out of assignment email 2. Ticket assignedNo email; live notification still sentP2
TC-NTF-005URD-NTF-005Batch delivery1. Queue 100 notifications 2. Batch worker runsAll delivered; per-recipient delivery log createdP2
TC-ACC-001URD-TKT-002Cross-merchant block1. Merchant B agent queries Merchant A ticketsForbidden / empty; no cross-merchant leakP1
TC-ACC-002URD-MSG-002Internal note hidden1. Customer queries messages incl. internal notesInternal notes excludedP1
TC-ACC-003URD-AGT-001Agent scope1. Merchant A agent creates agent in Merchant BRejected; scoped to own merchantP1
TC-ACC-004URD-SLA-001SLA policy permission1. Non-admin modifies an SLA policyRejected; insufficient permissionP1

3. Traceability

Every Must requirement must map to ≥1 test case. Gaps flagged explicitly.

URD requirementTest case(s)Status
URD-TKT-001TC-TKT-001, TC-TKT-004, TC-TKT-005✅ Covered
URD-TKT-002TC-TKT-002, TC-ACC-001✅ Covered
URD-TKT-003TC-TKT-003✅ Covered
URD-TKT-004TC-TKT-006–010, TC-TKT-014, TC-TKT-015✅ Covered
URD-TKT-005TC-TKT-006, TC-AGT-011✅ Covered
URD-TKT-006TC-TKT-010, TC-TKT-011✅ Covered
URD-TKT-007⚠️ Uncovered (context enrichment not exercised)
URD-TKT-008TC-TKT-016✅ Covered
URD-TKT-009 (S)TC-TKT-013✅ Covered
URD-TKT-010 (S)TC-TKT-011, TC-TKT-012✅ Covered
URD-TKT-011 (S)⚠️ Uncovered (enrichment worker)
URD-TKT-012 (S)TC-TKT-017✅ Covered
URD-MSG-001TC-MSG-001, TC-MSG-002✅ Covered
URD-MSG-002TC-MSG-003, TC-MSG-004, TC-ACC-002✅ Covered
URD-MSG-003TC-MSG-005✅ Covered
URD-MSG-004⚠️ Uncovered (author/author-type assertion implicit only)
URD-MSG-005 (S)TC-MSG-006✅ Covered
URD-CAT-001TC-CAT-001, TC-CAT-002, TC-CAT-003✅ Covered
URD-CAT-002TC-CAT-004✅ Covered
URD-CAT-003TC-CAT-005✅ Covered
URD-CAT-004 (S)TC-CAT-006, TC-CAT-007✅ Covered
URD-CAT-005⚠️ Uncovered (priority levels not directly tested)
URD-SLA-001TC-SLA-001, TC-SLA-002, TC-ACC-004✅ Covered
URD-SLA-002TC-SLA-001✅ Covered
URD-SLA-003TC-SLA-003✅ Covered
URD-SLA-004TC-SLA-004✅ Covered
URD-SLA-005TC-SLA-006, TC-SLA-007✅ Covered
URD-SLA-006TC-SLA-005✅ Covered
URD-SLA-007TC-SLA-008✅ Covered
URD-SLA-008TC-SLA-009✅ Covered
URD-SLA-009 (S)⚠️ Uncovered (policy escalation rules)
URD-SLA-010 (S)TC-CAT-004✅ Covered
URD-AGT-001TC-AGT-001, TC-AGT-002, TC-ACC-003✅ Covered
URD-AGT-002TC-AGT-003✅ Covered
URD-AGT-003TC-AGT-004✅ Covered
URD-AGT-004TC-AGT-006, TC-AGT-007✅ Covered
URD-AGT-005TC-AGT-008–010✅ Covered
URD-AGT-006TC-AGT-008, TC-AGT-009, TC-AGT-010✅ Covered
URD-AGT-007TC-AGT-011, TC-AGT-012✅ Covered
URD-AGT-008 (S)⚠️ Uncovered (performance metrics)
URD-AGT-009 (S)⚠️ Uncovered (agent schedule)
URD-AGT-010TC-AGT-005✅ Covered
URD-KB-001 (S)TC-KB-001✅ Covered
URD-KB-002 (S)TC-KB-002, TC-KB-003✅ Covered
URD-KB-003 (S)TC-KB-004✅ Covered
URD-KB-004 (S)TC-KB-005✅ Covered
URD-KB-005 (S)⚠️ Uncovered (article categories)
URD-KB-006 (C)TC-KB-006, TC-KB-007✅ Covered
URD-KB-007 (C)TC-KB-005✅ Covered
URD-SRV-001 (S)TC-SRV-001✅ Covered
URD-SRV-002 (S)TC-SRV-001✅ Covered
URD-SRV-003 (S)TC-SRV-002✅ Covered
URD-SRV-004 (S)TC-SRV-003, TC-SRV-005✅ Covered
URD-SRV-005 (S)TC-SRV-004✅ Covered
URD-SRV-006 (S)⚠️ Uncovered (satisfaction score feed)
URD-FR-001 (S)TC-FR-001✅ Covered
URD-FR-002 (S)TC-FR-005✅ Covered
URD-FR-003 (S)TC-FR-002, TC-FR-003, TC-FR-004✅ Covered
URD-FR-004 (S)⚠️ Uncovered (ticket linkage)
URD-FR-005 (C)⚠️ Uncovered (internal notes)
URD-CMP-001 (S)TC-CMP-001✅ Covered
URD-CMP-002 (S)TC-CMP-002✅ Covered
URD-CMP-003 (S)TC-CMP-003, TC-CMP-004✅ Covered
URD-CMP-004 (S)TC-CMP-001✅ Covered
URD-NTF-001TC-NTF-001, TC-NTF-002✅ Covered
URD-NTF-002 (S)TC-NTF-003✅ Covered
URD-NTF-003 (S)TC-NTF-004✅ Covered
URD-NTF-004 (S)⚠️ Uncovered (templates)
URD-NTF-005 (S)TC-NTF-005✅ Covered

Must-requirement gaps: URD-TKT-007, URD-MSG-004, URD-CAT-005 have no dedicated test case yet — add coverage when the build is repaired. Remaining gaps are Should/Could and can be deferred.

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.