# 3. Notification Preferences — Test Cases

User Type: **Student**
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 | Notification categories (study, exam, achievement, social, promotional) | TC-ST-15-03-001 |
| 3.1 Notification Category Preferences | Enable/disable a category | TC-ST-15-03-002 |
| 3.1 Notification Category Preferences | Category preferences across all channels | TC-ST-15-03-003 |
| 3.1 Notification Category Preferences | Default preferences on signup | TC-ST-15-03-004 |
| 3.1 Notification Category Preferences | Preference changes take effect immediately | TC-ST-15-03-005 |
| 3.1 Notification Category Preferences | Preferences available on web and mobile | TC-ST-15-03-006 |
| 3.1 Notification Category Preferences | Preference event logging (changed) | TC-ST-15-03-007 |
| 3.1 Notification Category Preferences | Audit logging of the notification category preferences | TC-ST-15-03-008 |
| 3.1 Notification Category Preferences | Rule: The Student can enable/disable each category. | TC-ST-15-03-001 |
| 3.1 Notification Category Preferences | Rule: Preferences apply across all channels. | TC-ST-15-03-002 |
| 3.1 Notification Category Preferences | Rule: Default preferences are set on signup. | TC-ST-15-03-003 |
| 3.1 Notification Category Preferences | Rule: Preference events (changed) are logged with the account and the timestamp. | TC-ST-15-03-004 |
| 3.1 Notification Category Preferences | Rule: The notification category preferences is audit-logged with the account and the timestamp. | TC-ST-15-03-005 |
| 3.2 Channel and Timing Preferences | Channel selection per category (in-app, email, push) | TC-ST-15-03-009 |
| 3.2 Channel and Timing Preferences | Quiet hours configuration | TC-ST-15-03-010 |
| 3.2 Channel and Timing Preferences | Daily digest time | TC-ST-15-03-011 |
| 3.2 Channel and Timing Preferences | Do-not-disturb window | TC-ST-15-03-012 |
| 3.2 Channel and Timing Preferences | Channel preferences across categories | TC-ST-15-03-013 |
| 3.2 Channel and Timing Preferences | Preferences available on web and mobile | TC-ST-15-03-014 |
| 3.2 Channel and Timing Preferences | Preference event logging (changed) | TC-ST-15-03-015 |
| 3.2 Channel and Timing Preferences | Audit logging of the channel and timing preferences | TC-ST-15-03-016 |
| 3.2 Channel and Timing Preferences | Rule: The Student selects channels per category. | TC-ST-15-03-009 |
| 3.2 Channel and Timing Preferences | Rule: Quiet hours suppress notifications in the set window. | TC-ST-15-03-010 |
| 3.2 Channel and Timing Preferences | Rule: The daily digest is sent at the set time. | TC-ST-15-03-011 |
| 3.2 Channel and Timing Preferences | Rule: Preference events (changed) are logged with the account and the timestamp. | TC-ST-15-03-012 |
| 3.2 Channel and Timing Preferences | Rule: The channel and timing preferences is audit-logged with the account and the timestamp. | TC-ST-15-03-013 |
| 3.3 Notification Frequency and Digest | Real-time vs digest delivery | TC-ST-15-03-017 |
| 3.3 Notification Frequency and Digest | Daily digest of the day's events | TC-ST-15-03-018 |
| 3.3 Notification Frequency and Digest | Digest content (reminders, alerts, achievements) | TC-ST-15-03-019 |
| 3.3 Notification Frequency and Digest | Digest time configurable | TC-ST-15-03-020 |
| 3.3 Notification Frequency and Digest | Frequency per category | TC-ST-15-03-021 |
| 3.3 Notification Frequency and Digest | Preferences available on web and mobile | TC-ST-15-03-022 |
| 3.3 Notification Frequency and Digest | Preference event logging (changed) | TC-ST-15-03-023 |
| 3.3 Notification Frequency and Digest | Audit logging of the notification frequency and digest | TC-ST-15-03-024 |
| 3.3 Notification Frequency and Digest | Rule: The Student chooses real-time or digest per category. | TC-ST-15-03-017 |
| 3.3 Notification Frequency and Digest | Rule: The digest summarizes the day's events. | TC-ST-15-03-018 |
| 3.3 Notification Frequency and Digest | Rule: The digest time is configurable. | TC-ST-15-03-019 |
| 3.3 Notification Frequency and Digest | Rule: Preference events (changed) are logged with the account and the timestamp. | TC-ST-15-03-020 |
| 3.3 Notification Frequency and Digest | Rule: The notification frequency and digest is audit-logged with the account and the timestamp. | TC-ST-15-03-021 |

## 3.1 Notification Category Preferences

### TC-ST-15-03-001 — Notification categories (study, exam, achievement, social, promotional)
**Type:** Positive
**Covers:** 3.1 → Notification categories (study, exam, achievement, social, promotional); Rule: The Student can enable/disable each category.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Notification categories (study.
2. Observe the result and verify the full behavior: Notification categories (study, exam, achievement, social, promotional).
**Expected Result:** Notification categories (study, exam, achievement, social, promotional) — delivered exactly as documented.
**Priority:** Critical

### TC-ST-15-03-002 — Enable/disable a category
**Type:** Positive
**Covers:** 3.1 → Enable/disable a category; Rule: Preferences apply across all channels.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Enable/disable a category.
2. Observe the result and verify the full behavior: Enable/disable a category.
**Expected Result:** Enable/disable a category — delivered exactly as documented.
**Priority:** High

### TC-ST-15-03-003 — Category preferences across all channels
**Type:** Positive
**Covers:** 3.1 → Category preferences across all channels; Rule: Default preferences are set on signup.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Category preferences across all channels.
2. Observe the result and verify the full behavior: Category preferences across all channels.
**Expected Result:** Category preferences across all channels — delivered exactly as documented.
**Priority:** High

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

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

### TC-ST-15-03-006 — Preferences available on web and mobile
**Type:** Positive
**Covers:** 3.1 → Preferences available on web and mobile
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, 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-ST-15-03-007 — Preference event logging (changed)
**Type:** Positive
**Covers:** 3.1 → Preference event logging (changed)
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Preference event logging (changed).
2. Observe the result and verify the full behavior: Preference event logging (changed).
**Expected Result:** Preference event logging (changed) — delivered exactly as documented.
**Priority:** High

### TC-ST-15-03-008 — Audit logging of the notification category preferences
**Type:** Positive
**Covers:** 3.1 → Audit logging of the notification category preferences
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, 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-ST-15-03-009 — Channel selection per category (in-app, email, push)
**Type:** Positive
**Covers:** 3.2 → Channel selection per category (in-app, email, push); Rule: The Student selects channels per category.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Channel selection per category (in-app.
2. Observe the result and verify the full behavior: Channel selection per category (in-app, email, push).
**Expected Result:** Channel selection per category (in-app, email, push) — delivered exactly as documented.
**Priority:** Critical

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

### TC-ST-15-03-011 — Daily digest time
**Type:** Positive
**Covers:** 3.2 → Daily digest time; Rule: The daily digest is sent at the set time.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Daily digest time.
2. Observe the result and verify the full behavior: Daily digest time.
**Expected Result:** Daily digest time — delivered exactly as documented.
**Priority:** High

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

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

### TC-ST-15-03-014 — Preferences available on web and mobile
**Type:** Positive
**Covers:** 3.2 → Preferences available on web and mobile
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, 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-ST-15-03-015 — Preference event logging (changed)
**Type:** Positive
**Covers:** 3.2 → Preference event logging (changed)
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Preference event logging (changed).
2. Observe the result and verify the full behavior: Preference event logging (changed).
**Expected Result:** Preference event logging (changed) — delivered exactly as documented.
**Priority:** High

### TC-ST-15-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 Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, 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-ST-15-03-017 — Real-time vs digest delivery
**Type:** Positive
**Covers:** 3.3 → Real-time vs digest delivery; Rule: The Student chooses real-time or digest per category.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Real-time vs digest delivery.
2. Observe the result and verify the full behavior: Real-time vs digest delivery.
**Expected Result:** Real-time vs digest delivery — delivered exactly as documented.
**Priority:** Critical

### TC-ST-15-03-018 — Daily digest of the day's events
**Type:** Positive
**Covers:** 3.3 → Daily digest of the day's events; Rule: The digest summarizes the day's events.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Daily digest of the day's events.
2. Observe the result and verify the full behavior: Daily digest of the day's events.
**Expected Result:** Daily digest of the day's events — delivered exactly as documented.
**Priority:** High

### TC-ST-15-03-019 — Digest content (reminders, alerts, achievements)
**Type:** Positive
**Covers:** 3.3 → Digest content (reminders, alerts, achievements); Rule: The digest time is configurable.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Digest content (reminders.
2. Observe the result and verify the full behavior: Digest content (reminders, alerts, achievements).
**Expected Result:** Digest content (reminders, alerts, achievements) — delivered exactly as documented.
**Priority:** High

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

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

### TC-ST-15-03-022 — Preferences available on web and mobile
**Type:** Positive
**Covers:** 3.3 → Preferences available on web and mobile
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, 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-ST-15-03-023 — Preference event logging (changed)
**Type:** Positive
**Covers:** 3.3 → Preference event logging (changed)
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Preference event logging (changed).
2. Observe the result and verify the full behavior: Preference event logging (changed).
**Expected Result:** Preference event logging (changed) — delivered exactly as documented.
**Priority:** High

### TC-ST-15-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 Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, 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
