# 1. Review Queue — Test Cases

User Type: **Super Administrator**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: review_queue.md — every feature, sub-feature, and rule covered

---

## Test Execution Policy
- Zero tolerance: any deviation from documented behavior = FAILED = bug
- Every bug is immediately logged/reported (Bug ID, feature, sub-feature,
  expected vs actual, severity) and fixed 100% before the group passes
- Feature group passes only at 100% test pass rate

## Coverage Matrix
| Feature | Sub-feature / Rule | Test IDs |
|---------|--------------------|----------|
| 1.1 View Newly Uploaded Content Pending Review | Review queue: the list of content pending review | TC-SA-10-01-001 |
| 1.1 View Newly Uploaded Content Pending Review | Queue entry: content enters the queue on upload (before it is live) | TC-SA-10-01-002 |
| 1.1 View Newly Uploaded Content Pending Review | Queue item detail: the content, the creator, the upload time, and the status | TC-SA-10-01-003 |
| 1.1 View Newly Uploaded Content Pending Review | Queue ordering: the items ordered (by upload time, by priority) | TC-SA-10-01-004 |
| 1.1 View Newly Uploaded Content Pending Review | Queue count: the number of items pending (the workload visible) | TC-SA-10-01-005 |
| 1.1 View Newly Uploaded Content Pending Review | Queue aging: the time an item has been pending (the stale items visible) | TC-SA-10-01-006 |
| 1.1 View Newly Uploaded Content Pending Review | Audit logging of the queue actions | TC-SA-10-01-007 |
| 1.1 View Newly Uploaded Content Pending Review | Rule: content enters the queue on upload; it is not live until it is reviewed and approved | TC-SA-10-01-002 |
| 1.1 View Newly Uploaded Content Pending Review | Rule: the queue shows the content, the creator, the upload time, and the status; the item is self-describing | TC-SA-10-01-003 |
| 1.1 View Newly Uploaded Content Pending Review | Rule: the ordering and the aging make the stale items visible; a long-pending item is a delay, not a silent wait | TC-SA-10-01-006 |
| 1.1 View Newly Uploaded Content Pending Review | Rule: an item leaves the queue on the action (approve/reject/flag); it is not both in the queue and acted on | TC-SA-10-01-008 |
| 1.1 View Newly Uploaded Content Pending Review | Rule: the queue count is the workload; it is visible so the review load is managed | TC-SA-10-01-005 |
| 1.1 View Newly Uploaded Content Pending Review | Rule: queue actions are audit-logged with the content, actor, and timestamp | TC-SA-10-01-007 |
| 1.2 Filter by Content Type, Subject, and Creator | Type filter: the queue filtered by the content type (video, document, flashcard, etc.) | TC-SA-10-01-009 |
| 1.2 Filter by Content Type, Subject, and Creator | Subject filter: the queue filtered by the subject | TC-SA-10-01-010 |
| 1.2 Filter by Content Type, Subject, and Creator | Creator filter: the queue filtered by the creator | TC-SA-10-01-011 |
| 1.2 Filter by Content Type, Subject, and Creator | Combined filters: the filters combined (the type and the subject and the creator) | TC-SA-10-01-012 |
| 1.2 Filter by Content Type, Subject, and Creator | Filtered view: the queue shown for the filter set | TC-SA-10-01-013 |
| 1.2 Filter by Content Type, Subject, and Creator | Filter reset: the filters cleared (the full queue restored) | TC-SA-10-01-014 |
| 1.2 Filter by Content Type, Subject, and Creator | Audit logging of the filtered reviews (where applicable) | TC-SA-10-01-015 |
| 1.2 Filter by Content Type, Subject, and Creator | Rule: the filters are by the content type, the subject, and the creator; they can be combined | TC-SA-10-01-012 |
| 1.2 Filter by Content Type, Subject, and Creator | Rule: a filtered view is the queue for the filter set; it is a subset, not a different queue | TC-SA-10-01-013 |
| 1.2 Filter by Content Type, Subject, and Creator | Rule: a filter reset restores the full queue; the filters are not sticky | TC-SA-10-01-014 |
| 1.2 Filter by Content Type, Subject, and Creator | Rule: a reviewer's scope is their filter (their subject/type); they work their subset, and the overall state is visible to the Super Admin | TC-SA-10-01-016 |
| 1.2 Filter by Content Type, Subject, and Creator | Rule: a filtered review is still a review; the action (approve/reject/flag) is the same, scoped to the filtered item | TC-SA-10-01-017 |
| 1.2 Filter by Content Type, Subject, and Creator | Rule: filtered reviews are audit-logged where applicable | TC-SA-10-01-015 |

## 1.1 View Newly Uploaded Content Pending Review

### TC-SA-10-01-001 — Review queue: the list of content pending review
**Type:** Positive
**Covers:** 1.1 → Review queue: the list of content pending review
**Preconditions:** Multiple content items have been uploaded and are pending review.
**Steps:**
1. As Super Admin, open the review queue.
2. Verify the list of content pending review is shown (the newly uploaded content in one place).
**Expected Result:** The review queue presents the list of content pending review in one place.
**Priority:** Critical

### TC-SA-10-01-002 — Queue entry: content enters the queue on upload (before it is live); it is not live until reviewed and approved
**Type:** Negative
**Covers:** 1.1 → Queue entry: content enters the queue on upload (before it is live); Rule: content enters the queue on upload; it is not live until it is reviewed and approved
**Preconditions:** A content owner uploads a new content item.
**Steps:**
1. Upload a new content item.
2. Verify the content enters the review queue on upload.
3. As a learner, verify the content is not live (not available) until it is reviewed and approved.
**Expected Result:** The content enters the queue on upload — it is not live until it is reviewed and approved.
**Priority:** Critical

### TC-SA-10-01-003 — Queue item detail: the content, the creator, the upload time, and the status; the item is self-describing
**Type:** Positive
**Covers:** 1.1 → Queue item detail: the content, the creator, the upload time, and the status; Rule: the queue shows the content, the creator, the upload time, and the status; the item is self-describing
**Preconditions:** A content item is in the review queue.
**Steps:**
1. Open a queue item.
2. Verify the detail shows the content, the creator, the upload time, and the status.
3. Verify the item is self-describing (the context — the course/topic it is for — is visible).
**Expected Result:** The queue item detail shows the content, the creator, the upload time, and the status — the item is self-describing.
**Priority:** High

### TC-SA-10-01-004 — Queue ordering: the items ordered (by upload time, by priority)
**Type:** Positive
**Covers:** 1.1 → Queue ordering: the items ordered (by upload time, by priority)
**Preconditions:** Multiple content items are in the review queue with different upload times.
**Steps:**
1. Open the review queue.
2. Verify the items are ordered (by upload time — oldest first, or by priority).
3. Verify the oldest items are not buried.
**Expected Result:** The queue items are ordered (by upload time, by priority) — the oldest first, so the stale items are not buried.
**Priority:** High

### TC-SA-10-01-005 — Queue count: the number of items pending (the workload visible); the review load is managed
**Type:** Positive
**Covers:** 1.1 → Queue count: the number of items pending (the workload visible); Rule: the queue count is the workload; it is visible so the review load is managed
**Preconditions:** Multiple content items are pending review.
**Steps:**
1. Open the review queue.
2. Verify the queue count (the number of items pending) is shown.
3. Verify the workload is visible so the review load is managed.
**Expected Result:** The queue count is shown — the workload is visible so the review load is managed.
**Priority:** High

### TC-SA-10-01-006 — Queue aging: the time an item has been pending (the stale items visible); a long-pending item is a delay, not a silent wait
**Type:** Negative
**Covers:** 1.1 → Queue aging: the time an item has been pending (the stale items visible); Rule: the ordering and the aging make the stale items visible; a long-pending item is a delay, not a silent wait
**Preconditions:** A content item has been pending review for a long time.
**Steps:**
1. Open the review queue.
2. Verify the aging (the time an item has been pending) is shown per item.
3. Verify the stale items (the long-pending ones) are visible (a long-pending item is a delay, not a silent wait).
**Expected Result:** The queue aging is shown — the stale items are visible; a long-pending item is a delay, not a silent wait.
**Priority:** High

### TC-SA-10-01-007 — Queue actions are audit-logged with the content, the actor, and the timestamp
**Type:** Positive
**Covers:** 1.1 → Audit logging of the queue actions; Rule: queue actions are audit-logged with the content, actor, and timestamp
**Preconditions:** Queue actions (view, act on items) have occurred.
**Steps:**
1. Open the audit trail and filter by "review queue".
2. Verify entries show the content, the actor, and the timestamp.
**Expected Result:** The queue actions are audit-logged with the content, actor, and timestamp.
**Priority:** Critical

### TC-SA-10-01-008 — An item leaves the queue on the action (approve/reject/flag); it is not both in the queue and acted on
**Type:** Negative
**Covers:** 1.1 → Rule: an item leaves the queue on the action (approve/reject/flag); it is not both in the queue and acted on
**Preconditions:** A content item is in the review queue.
**Steps:**
1. Approve (or reject/flag) the content item.
2. Verify the item leaves the queue on the action.
3. Verify the item is not both in the queue and acted on (no duplicate state).
**Expected Result:** The item leaves the queue on the action — it is not both in the queue and acted on.
**Priority:** Critical

## 1.2 Filter by Content Type, Subject, and Creator

### TC-SA-10-01-009 — Type filter: the queue filtered by the content type (video, document, flashcard, etc.)
**Type:** Positive
**Covers:** 1.2 → Type filter: the queue filtered by the content type (video, document, flashcard, etc.)
**Preconditions:** The review queue has items of multiple content types.
**Steps:**
1. Filter the queue by the content type (video).
2. Verify the queue narrows to the videos only.
**Expected Result:** The queue is filtered by the content type — it narrows to the selected type.
**Priority:** High

### TC-SA-10-01-010 — Subject filter: the queue filtered by the subject
**Type:** Positive
**Covers:** 1.2 → Subject filter: the queue filtered by the subject
**Preconditions:** The review queue has items across multiple subjects.
**Steps:**
1. Filter the queue by the subject.
2. Verify the queue narrows to that subject's items.
**Expected Result:** The queue is filtered by the subject — it narrows to that subject's items.
**Priority:** High

### TC-SA-10-01-011 — Creator filter: the queue filtered by the creator
**Type:** Positive
**Covers:** 1.2 → Creator filter: the queue filtered by the creator
**Preconditions:** The review queue has items from multiple creators.
**Steps:**
1. Filter the queue by the creator.
2. Verify the queue narrows to that creator's items.
**Expected Result:** The queue is filtered by the creator — it narrows to that creator's items.
**Priority:** High

### TC-SA-10-01-012 — Combined filters: the filters combined (the type and the subject and the creator); they can be combined
**Type:** Positive
**Covers:** 1.2 → Combined filters: the filters combined (the type and the subject and the creator); Rule: the filters are by the content type, the subject, and the creator; they can be combined
**Preconditions:** The review queue has items across types, subjects, and creators.
**Steps:**
1. Combine the filters (the subject and the type and the creator).
2. Verify the filtered view is the exact items matching all three filters.
**Expected Result:** The filters can be combined — the filtered view is the exact items matching all three.
**Priority:** High

### TC-SA-10-01-013 — Filtered view: the queue shown for the filter set; it is a subset, not a different queue
**Type:** Positive
**Covers:** 1.2 → Filtered view: the queue shown for the filter set; Rule: a filtered view is the queue for the filter set; it is a subset, not a different queue
**Preconditions:** A filter set is applied to the review queue.
**Steps:**
1. Apply a filter set.
2. Verify the filtered view is the queue for the filter set (a subset, not a different queue).
3. Verify the items in the filtered view are the same items from the full queue.
**Expected Result:** The filtered view is the queue for the filter set — a subset, not a different queue.
**Priority:** Medium

### TC-SA-10-01-014 — Filter reset: the filters cleared (the full queue restored); the filters are not sticky
**Type:** Negative
**Covers:** 1.2 → Filter reset: the filters cleared (the full queue restored); Rule: a filter reset restores the full queue; the filters are not sticky
**Preconditions:** Filters are applied to the review queue.
**Steps:**
1. Reset the filters.
2. Verify the full queue is restored.
3. Verify the filters are not sticky (they do not persist after reset).
**Expected Result:** The filter reset restores the full queue — the filters are not sticky.
**Priority:** High

### TC-SA-10-01-015 — Filtered reviews are audit-logged where applicable (the content, the filter, the actor, the timestamp)
**Type:** Positive
**Covers:** 1.2 → Audit logging of the filtered reviews (where applicable); Rule: filtered reviews are audit-logged where applicable
**Preconditions:** Reviews have been performed on a filtered queue.
**Steps:**
1. Open the audit trail and filter by "filtered review".
2. Verify entries show the content, the filter, the actor, and the timestamp (where applicable).
**Expected Result:** The filtered reviews are audit-logged where applicable.
**Priority:** Medium

### TC-SA-10-01-016 — A reviewer's scope is their filter (their subject/type); they work their subset, and the overall state is visible to the Super Admin
**Type:** Positive
**Covers:** 1.2 → Rule: a reviewer's scope is their filter (their subject/type); they work their subset, and the overall state is visible to the Super Admin
**Preconditions:** A reviewer is assigned a subject scope.
**Steps:**
1. As the reviewer, work their filtered queue (their subject's items).
2. As Super Admin, verify the overall state is visible (the per-reviewer progress).
**Expected Result:** The reviewer works their subset — the overall state is visible to the Super Admin.
**Priority:** Medium

### TC-SA-10-01-017 — A filtered review is still a review; the action (approve/reject/flag) is the same, scoped to the filtered item
**Type:** Positive
**Covers:** 1.2 → Rule: a filtered review is still a review; the action (approve/reject/flag) is the same, scoped to the filtered item
**Preconditions:** A filtered queue is active; a content item is in the filtered view.
**Steps:**
1. Approve (or reject/flag) the item from the filtered view.
2. Verify the action is the same as from the full queue (scoped to the filtered item).
**Expected Result:** The filtered review is still a review — the action is the same, scoped to the filtered item.
**Priority:** Medium
