# 4. Notification History & Management — Test Cases

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

## Test Execution Policy

- Zero tolerance: any deviation from the documented behavior is a defect.
- Every failed test is logged with a Bug ID, the feature, the sub-feature, the expected vs actual result, and the severity; 100% of bugs are fixed before the group passes.
- 100% pass rate is required for the group to be marked complete.

## Coverage Matrix

| Feature | Sub-feature / Rule | Test IDs |
|---------|--------------------|----------|
| 4.1 | Full notification history | TC-AF-9-04-001 |
| 4.1 | Notifications with type, message, and timestamp | TC-AF-9-04-002 |
| 4.1 | Filter by category | TC-AF-9-04-003 |
| 4.1 | Search the history | TC-AF-9-04-004 |
| 4.1 | History paginated | TC-AF-9-04-005 |
| 4.1 | History available on web and mobile | TC-AF-9-04-006 |
| 4.1 | History event logging (viewed) | TC-AF-9-04-007 |
| 4.1 | Audit logging of the notification history | TC-AF-9-04-008 |
| 4.1 | Rule: The history shows all past notifications. | TC-AF-9-04-001 |
| 4.1 | Rule: The history is filterable by category and searchable. | TC-AF-9-04-002 |
| 4.1 | Rule: History events (viewed) are logged with the account and the timestamp. | TC-AF-9-04-003 |
| 4.1 | Rule: The notification history is audit-logged with the account and the timestamp. | TC-AF-9-04-004 |
| 4.2 | Mark a notification as read | TC-AF-9-04-009 |
| 4.2 | Mark all as read | TC-AF-9-04-010 |
| 4.2 | Clear the notification list | TC-AF-9-04-011 |
| 4.2 | Unread count updates | TC-AF-9-04-012 |
| 4.2 | Read state persists across devices | TC-AF-9-04-013 |
| 4.2 | Management available on web and mobile | TC-AF-9-04-014 |
| 4.2 | Management event logging (marked read, cleared) | TC-AF-9-04-015 |
| 4.2 | Audit logging of the mark as read and clear | TC-AF-9-04-016 |
| 4.2 | Rule: The unread count updates on mark-as-read and clear. | TC-AF-9-04-009 |
| 4.2 | Rule: The read state persists across devices. | TC-AF-9-04-010 |
| 4.2 | Rule: Management events (marked read, cleared) are logged with the account and the timestamp. | TC-AF-9-04-011 |
| 4.2 | Rule: The mark as read and clear is audit-logged with the account and the timestamp. | TC-AF-9-04-012 |
| 4.3 | Critical system notifications delivered | TC-AF-9-04-017 |
| 4.3 | Account security alerts | TC-AF-9-04-018 |
| 4.3 | Program policy change alerts | TC-AF-9-04-019 |
| 4.3 | Payout issue alerts | TC-AF-9-04-020 |
| 4.3 | Cannot be muted or batched | TC-AF-9-04-021 |
| 4.3 | Always real-time on all enabled channels | TC-AF-9-04-022 |
| 4.3 | Notifications event logging (sent, viewed) | TC-AF-9-04-023 |
| 4.3 | Audit logging of the critical system notifications | TC-AF-9-04-024 |
| 4.3 | Rule: The critical notifications cannot be muted or batched. | TC-AF-9-04-017 |
| 4.3 | Rule: The critical notifications are always real-time on all enabled channels. | TC-AF-9-04-018 |
| 4.3 | Rule: Notifications events (sent, viewed) are logged with the account and the timestamp. | TC-AF-9-04-019 |
| 4.3 | Rule: The critical system notifications is audit-logged with the account and the timestamp. | TC-AF-9-04-020 |

## 4.1 Notification History

### TC-AF-9-04-001 — Full notification history
**Type:** Positive
**Covers:** 4.1 → Full notification history; Rule: The history shows all past notifications.
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, set up the precondition and perform: Full notification history.
2. Observe the result and verify the full behavior: Full notification history.
**Expected Result:** Full notification history — delivered exactly as documented.
**Priority:** Critical

### TC-AF-9-04-002 — Notifications with type, message, and timestamp
**Type:** Positive
**Covers:** 4.1 → Notifications with type, message, and timestamp; Rule: The history is filterable by category and searchable.
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, set up the precondition and perform: Notifications with type, message, and timestamp.
2. Observe the result and verify the full behavior: Notifications with type, message, and timestamp.
**Expected Result:** Notifications with type, message, and timestamp — delivered exactly as documented.
**Priority:** High

### TC-AF-9-04-003 — Filter by category
**Type:** Positive
**Covers:** 4.1 → Filter by category; Rule: History events (viewed) are logged with the account and the timestamp.
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, set up the precondition and perform: Filter by category.
2. Observe the result and verify the full behavior: Filter by category.
**Expected Result:** Filter by category — delivered exactly as documented.
**Priority:** High

### TC-AF-9-04-004 — Search the history
**Type:** Positive
**Covers:** 4.1 → Search the history; Rule: The notification history is audit-logged with the account and the timestamp.
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, set up the precondition and perform: Search the history.
2. Observe the result and verify the full behavior: Search the history.
**Expected Result:** Search the history — delivered exactly as documented.
**Priority:** High

### TC-AF-9-04-005 — History paginated
**Type:** Positive
**Covers:** 4.1 → History paginated
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, set up the precondition and perform: History paginated.
2. Observe the result and verify the full behavior: History paginated.
**Expected Result:** History paginated — delivered exactly as documented.
**Priority:** High

### TC-AF-9-04-006 — History available on web and mobile
**Type:** Positive
**Covers:** 4.1 → History available on web and mobile
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, set up the precondition and perform: History available on web and mobile.
2. Observe the result and verify the full behavior: History available on web and mobile.
**Expected Result:** History available on web and mobile — delivered exactly as documented.
**Priority:** High

### TC-AF-9-04-007 — History event logging (viewed)
**Type:** Positive
**Covers:** 4.1 → History event logging (viewed)
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, set up the precondition and perform: History event logging (viewed).
2. Observe the result and verify the full behavior: History event logging (viewed).
**Expected Result:** History event logging (viewed) — delivered exactly as documented.
**Priority:** High

### TC-AF-9-04-008 — Audit logging of the notification history
**Type:** Positive
**Covers:** 4.1 → Audit logging of the notification history
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, perform the notification history action.
2. Open the audit log and verify the entry for the action.
**Expected Result:** The notification history action is recorded in the audit log with the account and the timestamp.
**Priority:** Critical


## 4.2 Mark as Read & Clear

### TC-AF-9-04-009 — Mark a notification as read
**Type:** Positive
**Covers:** 4.2 → Mark a notification as read; Rule: The unread count updates on mark-as-read and clear.
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, set up the precondition and perform: Mark a notification as read.
2. Observe the result and verify the full behavior: Mark a notification as read.
**Expected Result:** Mark a notification as read — delivered exactly as documented.
**Priority:** Critical

### TC-AF-9-04-010 — Mark all as read
**Type:** Positive
**Covers:** 4.2 → Mark all as read; Rule: The read state persists across devices.
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, set up the precondition and perform: Mark all as read.
2. Observe the result and verify the full behavior: Mark all as read.
**Expected Result:** Mark all as read — delivered exactly as documented.
**Priority:** High

### TC-AF-9-04-011 — Clear the notification list
**Type:** Positive
**Covers:** 4.2 → Clear the notification list; Rule: Management events (marked read, cleared) are logged with the account and the timestamp.
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, set up the precondition and perform: Clear the notification list.
2. Observe the result and verify the full behavior: Clear the notification list.
**Expected Result:** Clear the notification list — delivered exactly as documented.
**Priority:** High

### TC-AF-9-04-012 — Unread count updates
**Type:** Positive
**Covers:** 4.2 → Unread count updates; Rule: The mark as read and clear is audit-logged with the account and the timestamp.
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, set up the precondition and perform: Unread count updates.
2. Observe the result and verify the full behavior: Unread count updates.
**Expected Result:** Unread count updates — delivered exactly as documented.
**Priority:** High

### TC-AF-9-04-013 — Read state persists across devices
**Type:** Positive
**Covers:** 4.2 → Read state persists across devices
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, set up the precondition and perform: Read state persists across devices.
2. Observe the result and verify the full behavior: Read state persists across devices.
**Expected Result:** Read state persists across devices — delivered exactly as documented.
**Priority:** High

### TC-AF-9-04-014 — Management available on web and mobile
**Type:** Positive
**Covers:** 4.2 → Management available on web and mobile
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, set up the precondition and perform: Management available on web and mobile.
2. Observe the result and verify the full behavior: Management available on web and mobile.
**Expected Result:** Management available on web and mobile — delivered exactly as documented.
**Priority:** High

### TC-AF-9-04-015 — Management event logging (marked read, cleared)
**Type:** Positive
**Covers:** 4.2 → Management event logging (marked read, cleared)
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, set up the precondition and perform: Management event logging (marked read, cleared).
2. Observe the result and verify the full behavior: Management event logging (marked read, cleared).
**Expected Result:** Management event logging (marked read, cleared) — delivered exactly as documented.
**Priority:** High

### TC-AF-9-04-016 — Audit logging of the mark as read and clear
**Type:** Positive
**Covers:** 4.2 → Audit logging of the mark as read and clear
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, perform the mark as read and clear action.
2. Open the audit log and verify the entry for the action.
**Expected Result:** The mark as read and clear action is recorded in the audit log with the account and the timestamp.
**Priority:** Critical


## 4.3 Critical System Notifications

### TC-AF-9-04-017 — Critical system notifications delivered
**Type:** Positive
**Covers:** 4.3 → Critical system notifications delivered; Rule: The critical notifications cannot be muted or batched.
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, set up the precondition and perform: Critical system notifications delivered.
2. Observe the result and verify the full behavior: Critical system notifications delivered.
**Expected Result:** Critical system notifications delivered — delivered exactly as documented.
**Priority:** Critical

### TC-AF-9-04-018 — Account security alerts
**Type:** Positive
**Covers:** 4.3 → Account security alerts; Rule: The critical notifications are always real-time on all enabled channels.
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, set up the precondition and perform: Account security alerts.
2. Observe the result and verify the full behavior: Account security alerts.
**Expected Result:** Account security alerts — delivered exactly as documented.
**Priority:** High

### TC-AF-9-04-019 — Program policy change alerts
**Type:** Positive
**Covers:** 4.3 → Program policy change alerts; Rule: Notifications events (sent, viewed) are logged with the account and the timestamp.
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, set up the precondition and perform: Program policy change alerts.
2. Observe the result and verify the full behavior: Program policy change alerts.
**Expected Result:** Program policy change alerts — delivered exactly as documented.
**Priority:** High

### TC-AF-9-04-020 — Payout issue alerts
**Type:** Positive
**Covers:** 4.3 → Payout issue alerts; Rule: The critical system notifications is audit-logged with the account and the timestamp.
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, set up the precondition and perform: Payout issue alerts.
2. Observe the result and verify the full behavior: Payout issue alerts.
**Expected Result:** Payout issue alerts — delivered exactly as documented.
**Priority:** High

### TC-AF-9-04-021 — Cannot be muted or batched
**Type:** Positive
**Covers:** 4.3 → Cannot be muted or batched
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, set up the precondition and perform: Cannot be muted or batched.
2. Observe the result and verify the full behavior: Cannot be muted or batched.
**Expected Result:** Cannot be muted or batched — delivered exactly as documented.
**Priority:** High

### TC-AF-9-04-022 — Always real-time on all enabled channels
**Type:** Positive
**Covers:** 4.3 → Always real-time on all enabled channels
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, set up the precondition and perform: Always real-time on all enabled channels.
2. Observe the result and verify the full behavior: Always real-time on all enabled channels.
**Expected Result:** Always real-time on all enabled channels — delivered exactly as documented.
**Priority:** High

### TC-AF-9-04-023 — Notifications event logging (sent, viewed)
**Type:** Positive
**Covers:** 4.3 → Notifications event logging (sent, viewed)
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, set up the precondition and perform: Notifications event logging (sent, viewed).
2. Observe the result and verify the full behavior: Notifications event logging (sent, viewed).
**Expected Result:** Notifications event logging (sent, viewed) — delivered exactly as documented.
**Priority:** High

### TC-AF-9-04-024 — Audit logging of the critical system notifications
**Type:** Positive
**Covers:** 4.3 → Audit logging of the critical system notifications
**Preconditions:** A Affiliate account is active and the Affiliate is in the state required for this behavior.
**Steps:**
1. As a Affiliate, perform the critical system notifications action.
2. Open the audit log and verify the entry for the action.
**Expected Result:** The critical system notifications action is recorded in the audit log with the account and the timestamp.
**Priority:** Critical
