# 3. Notification Preferences — Test Cases

User Type: **Parent**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: notification_preferences.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 |
|---------|--------------------|----------|
| 3.1 Notification Category Preferences | Enable or disable notification categories | TC-PT-10-03-001 |
| 3.1 Notification Category Preferences | Performance, activity, upcoming, account, billing categories | TC-PT-10-03-002 |
| 3.1 Notification Category Preferences | Per-category toggle | TC-PT-10-03-003 |
| 3.1 Notification Category Preferences | Default category set | TC-PT-10-03-004 |
| 3.1 Notification Category Preferences | Preference change confirmation | TC-PT-10-03-005 |
| 3.1 Notification Category Preferences | Preferences available on web and mobile | TC-PT-10-03-006 |
| 3.1 Notification Category Preferences | Preference event logging (set, changed) | TC-PT-10-03-007 |
| 3.1 Notification Category Preferences | Audit logging of the notification category preferences | TC-PT-10-03-008 |
| 3.1 Notification Category Preferences | Rule: The categories are independently toggleable. | TC-PT-10-03-001 |
| 3.1 Notification Category Preferences | Rule: A default category set is applied. | TC-PT-10-03-002 |
| 3.1 Notification Category Preferences | Rule: A preference change confirmation is shown. | TC-PT-10-03-003 |
| 3.1 Notification Category Preferences | Rule: Preference events (set, changed) are logged with the account and the timestamp. | TC-PT-10-03-004 |
| 3.1 Notification Category Preferences | Rule: The notification category preferences is audit-logged with the account and the timestamp. | TC-PT-10-03-005 |
| 3.2 Channel and Timing Preferences | Notification channels (in-app, email, push, SMS) | TC-PT-10-03-009 |
| 3.2 Channel and Timing Preferences | Quiet hours for non-critical notifications | TC-PT-10-03-010 |
| 3.2 Channel and Timing Preferences | Critical notifications always delivered | TC-PT-10-03-011 |
| 3.2 Channel and Timing Preferences | Per-channel toggle | TC-PT-10-03-012 |
| 3.2 Channel and Timing Preferences | Timing preference confirmation | TC-PT-10-03-013 |
| 3.2 Channel and Timing Preferences | Preferences available on web and mobile | TC-PT-10-03-014 |
| 3.2 Channel and Timing Preferences | Preference event logging (set, changed) | TC-PT-10-03-015 |
| 3.2 Channel and Timing Preferences | Audit logging of the channel and timing preferences | TC-PT-10-03-016 |
| 3.2 Channel and Timing Preferences | Rule: The channels are in-app, email, push, and SMS. | TC-PT-10-03-009 |
| 3.2 Channel and Timing Preferences | Rule: Quiet hours suppress non-critical notifications. | TC-PT-10-03-010 |
| 3.2 Channel and Timing Preferences | Rule: Critical notifications are always delivered. | TC-PT-10-03-011 |
| 3.2 Channel and Timing Preferences | Rule: Preference events (set, changed) are logged with the account and the timestamp. | TC-PT-10-03-012 |
| 3.2 Channel and Timing Preferences | Rule: The channel and timing preferences is audit-logged with the account and the timestamp. | TC-PT-10-03-013 |
| 3.3 Notification Frequency and Digest | Frequency options (real-time, daily, weekly digest) | TC-PT-10-03-017 |
| 3.3 Notification Frequency and Digest | Non-critical notifications bundled per frequency | TC-PT-10-03-018 |
| 3.3 Notification Frequency and Digest | Critical notifications always real-time | TC-PT-10-03-019 |
| 3.3 Notification Frequency and Digest | Digest content summary | TC-PT-10-03-020 |
| 3.3 Notification Frequency and Digest | Frequency change confirmation | TC-PT-10-03-021 |
| 3.3 Notification Frequency and Digest | Frequency available on web and mobile | TC-PT-10-03-022 |
| 3.3 Notification Frequency and Digest | Frequency event logging (set, changed) | TC-PT-10-03-023 |
| 3.3 Notification Frequency and Digest | Audit logging of the notification frequency and digest | TC-PT-10-03-024 |
| 3.3 Notification Frequency and Digest | Rule: The frequency is real-time, daily, or weekly digest. | TC-PT-10-03-017 |
| 3.3 Notification Frequency and Digest | Rule: Non-critical notifications are bundled per frequency. | TC-PT-10-03-018 |
| 3.3 Notification Frequency and Digest | Rule: Critical notifications are always real-time. | TC-PT-10-03-019 |
| 3.3 Notification Frequency and Digest | Rule: Frequency events (set, changed) are logged with the account and the timestamp. | TC-PT-10-03-020 |
| 3.3 Notification Frequency and Digest | Rule: The notification frequency and digest is audit-logged with the account and the timestamp. | TC-PT-10-03-021 |

## 3.1 Notification Category Preferences

### TC-PT-10-03-001 — Enable or disable notification categories
**Type:** Positive
**Covers:** 3.1 → Enable or disable notification categories; Rule: The categories are independently toggleable.
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, set up the precondition and perform: Enable or disable notification categories.
2. Observe the result and verify the full behavior: Enable or disable notification categories.
**Expected Result:** Enable or disable notification categories — delivered exactly as documented.
**Priority:** Critical

### TC-PT-10-03-002 — Performance, activity, upcoming, account, billing categories
**Type:** Positive
**Covers:** 3.1 → Performance, activity, upcoming, account, billing categories; Rule: A default category set is applied.
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, set up the precondition and perform: Performance.
2. Observe the result and verify the full behavior: Performance, activity, upcoming, account, billing categories.
**Expected Result:** Performance, activity, upcoming, account, billing categories — delivered exactly as documented.
**Priority:** High

### TC-PT-10-03-003 — Per-category toggle
**Type:** Positive
**Covers:** 3.1 → Per-category toggle; Rule: A preference change confirmation is shown.
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, set up the precondition and perform: Per-category toggle.
2. Observe the result and verify the full behavior: Per-category toggle.
**Expected Result:** Per-category toggle — delivered exactly as documented.
**Priority:** High

### TC-PT-10-03-004 — Default category set
**Type:** Positive
**Covers:** 3.1 → Default category set; Rule: Preference events (set, changed) are logged with the account and the timestamp.
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, set up the precondition and perform: Default category set.
2. Observe the result and verify the full behavior: Default category set.
**Expected Result:** Default category set — delivered exactly as documented.
**Priority:** High

### TC-PT-10-03-005 — Preference change confirmation
**Type:** Positive
**Covers:** 3.1 → Preference change confirmation; Rule: The notification category preferences is audit-logged with the account and the timestamp.
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, set up the precondition and perform: Preference change confirmation.
2. Observe the result and verify the full behavior: Preference change confirmation.
**Expected Result:** Preference change confirmation — delivered exactly as documented.
**Priority:** High

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

### TC-PT-10-03-007 — Preference event logging (set, changed)
**Type:** Positive
**Covers:** 3.1 → Preference event logging (set, changed)
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, set up the precondition and perform: Preference event logging (set.
2. Observe the result and verify the full behavior: Preference event logging (set, changed).
**Expected Result:** Preference event logging (set, changed) — delivered exactly as documented.
**Priority:** High

### TC-PT-10-03-008 — Audit logging of the notification category preferences
**Type:** Positive
**Covers:** 3.1 → Audit logging of the notification category preferences
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, perform the action associated with: Audit logging of the notification category preferences.
2. Open the relevant activity / audit log and verify the event is recorded with the account, the action, and the timestamp.
**Expected Result:** The action is audit-logged — the account, the action, and the timestamp are recorded.
**Priority:** Critical

## 3.2 Channel and Timing Preferences

### TC-PT-10-03-009 — Notification channels (in-app, email, push, SMS)
**Type:** Positive
**Covers:** 3.2 → Notification channels (in-app, email, push, SMS); Rule: The channels are in-app, email, push, and SMS.
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, set up the precondition and perform: Notification channels (in-app.
2. Observe the result and verify the full behavior: Notification channels (in-app, email, push, SMS).
**Expected Result:** Notification channels (in-app, email, push, SMS) — delivered exactly as documented.
**Priority:** Critical

### TC-PT-10-03-010 — Quiet hours for non-critical notifications
**Type:** Positive
**Covers:** 3.2 → Quiet hours for non-critical notifications; Rule: Quiet hours suppress non-critical notifications.
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, set up the precondition and perform: Quiet hours for non-critical notifications.
2. Observe the result and verify the full behavior: Quiet hours for non-critical notifications.
**Expected Result:** Quiet hours for non-critical notifications — delivered exactly as documented.
**Priority:** High

### TC-PT-10-03-011 — Critical notifications always delivered
**Type:** Positive
**Covers:** 3.2 → Critical notifications always delivered; Rule: Critical notifications are always delivered.
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, set up the precondition and perform: Critical notifications always delivered.
2. Observe the result and verify the full behavior: Critical notifications always delivered.
**Expected Result:** Critical notifications always delivered — delivered exactly as documented.
**Priority:** High

### TC-PT-10-03-012 — Per-channel toggle
**Type:** Positive
**Covers:** 3.2 → Per-channel toggle; Rule: Preference events (set, changed) are logged with the account and the timestamp.
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, set up the precondition and perform: Per-channel toggle.
2. Observe the result and verify the full behavior: Per-channel toggle.
**Expected Result:** Per-channel toggle — delivered exactly as documented.
**Priority:** High

### TC-PT-10-03-013 — Timing preference confirmation
**Type:** Positive
**Covers:** 3.2 → Timing preference confirmation; Rule: The channel and timing preferences is audit-logged with the account and the timestamp.
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, set up the precondition and perform: Timing preference confirmation.
2. Observe the result and verify the full behavior: Timing preference confirmation.
**Expected Result:** Timing preference confirmation — delivered exactly as documented.
**Priority:** High

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

### TC-PT-10-03-015 — Preference event logging (set, changed)
**Type:** Positive
**Covers:** 3.2 → Preference event logging (set, changed)
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, set up the precondition and perform: Preference event logging (set.
2. Observe the result and verify the full behavior: Preference event logging (set, changed).
**Expected Result:** Preference event logging (set, changed) — delivered exactly as documented.
**Priority:** High

### TC-PT-10-03-016 — Audit logging of the channel and timing preferences
**Type:** Positive
**Covers:** 3.2 → Audit logging of the channel and timing preferences
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, perform the action associated with: Audit logging of the channel and timing preferences.
2. Open the relevant activity / audit log and verify the event is recorded with the account, the action, and the timestamp.
**Expected Result:** The action is audit-logged — the account, the action, and the timestamp are recorded.
**Priority:** Critical

## 3.3 Notification Frequency and Digest

### TC-PT-10-03-017 — Frequency options (real-time, daily, weekly digest)
**Type:** Positive
**Covers:** 3.3 → Frequency options (real-time, daily, weekly digest); Rule: The frequency is real-time, daily, or weekly digest.
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, set up the precondition and perform: Frequency options (real-time.
2. Observe the result and verify the full behavior: Frequency options (real-time, daily, weekly digest).
**Expected Result:** Frequency options (real-time, daily, weekly digest) — delivered exactly as documented.
**Priority:** Critical

### TC-PT-10-03-018 — Non-critical notifications bundled per frequency
**Type:** Positive
**Covers:** 3.3 → Non-critical notifications bundled per frequency; Rule: Non-critical notifications are bundled per frequency.
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, set up the precondition and perform: Non-critical notifications bundled per frequency.
2. Observe the result and verify the full behavior: Non-critical notifications bundled per frequency.
**Expected Result:** Non-critical notifications bundled per frequency — delivered exactly as documented.
**Priority:** High

### TC-PT-10-03-019 — Critical notifications always real-time
**Type:** Positive
**Covers:** 3.3 → Critical notifications always real-time; Rule: Critical notifications are always real-time.
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, set up the precondition and perform: Critical notifications always real-time.
2. Observe the result and verify the full behavior: Critical notifications always real-time.
**Expected Result:** Critical notifications always real-time — delivered exactly as documented.
**Priority:** High

### TC-PT-10-03-020 — Digest content summary
**Type:** Positive
**Covers:** 3.3 → Digest content summary; Rule: Frequency events (set, changed) are logged with the account and the timestamp.
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, set up the precondition and perform: Digest content summary.
2. Observe the result and verify the full behavior: Digest content summary.
**Expected Result:** Digest content summary — delivered exactly as documented.
**Priority:** High

### TC-PT-10-03-021 — Frequency change confirmation
**Type:** Positive
**Covers:** 3.3 → Frequency change confirmation; Rule: The notification frequency and digest is audit-logged with the account and the timestamp.
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, set up the precondition and perform: Frequency change confirmation.
2. Observe the result and verify the full behavior: Frequency change confirmation.
**Expected Result:** Frequency change confirmation — delivered exactly as documented.
**Priority:** High

### TC-PT-10-03-022 — Frequency available on web and mobile
**Type:** Positive
**Covers:** 3.3 → Frequency available on web and mobile
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, set up the precondition and perform: Frequency available on web and mobile.
2. Observe the result and verify the full behavior: Frequency available on web and mobile.
**Expected Result:** Frequency available on web and mobile — delivered exactly as documented.
**Priority:** High

### TC-PT-10-03-023 — Frequency event logging (set, changed)
**Type:** Positive
**Covers:** 3.3 → Frequency event logging (set, changed)
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, set up the precondition and perform: Frequency event logging (set.
2. Observe the result and verify the full behavior: Frequency event logging (set, changed).
**Expected Result:** Frequency event logging (set, changed) — delivered exactly as documented.
**Priority:** High

### TC-PT-10-03-024 — Audit logging of the notification frequency and digest
**Type:** Positive
**Covers:** 3.3 → Audit logging of the notification frequency and digest
**Preconditions:** A Parent account is active and the Parent is in the state required for this behavior.
**Steps:**
1. As a Parent, perform the action associated with: Audit logging of the notification frequency and digest.
2. Open the relevant activity / audit log and verify the event is recorded with the account, the action, and the timestamp.
**Expected Result:** The action is audit-logged — the account, the action, and the timestamp are recorded.
**Priority:** Critical
