# 2. In-App Notifications — Test Cases

User Type: **Super Administrator**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: in_app_notifications.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 |
|---------|--------------------|----------|
| 2.1 Targeted Push Notifications | Push notification: the notification (the notification, the user, the content, the trigger, the date) | TC-SA-20-02-001 |
| 2.1 Targeted Push Notifications | Target user: the user (the target user, the segment, the count) | TC-SA-20-02-002 |
| 2.1 Targeted Push Notifications | Notification content: the content (the content of the notification, the title, the body) | TC-SA-20-02-003 |
| 2.1 Targeted Push Notifications | Notification trigger: the trigger (the trigger of the notification, e.g., the event, the schedule) | TC-SA-20-02-004 |
| 2.1 Targeted Push Notifications | Notification date: the date (the date of the notification, the time) | TC-SA-20-02-005 |
| 2.1 Targeted Push Notifications | Notification status: the status (the sent, the delivered, the read) | TC-SA-20-02-006 |
| 2.1 Targeted Push Notifications | Notification view: the view (the notifications, the users, the content, the dates) | TC-SA-20-02-007 |
| 2.1 Targeted Push Notifications | Audit logging of the push notification sending | TC-SA-20-02-008 |
| 2.1 Targeted Push Notifications | Rule: the push notification is the alert (the notification, the user, the content, the trigger, the date); the notification is the message | TC-SA-20-02-001 |
| 2.1 Targeted Push Notifications | Rule: the target user is the recipient (the target user, the segment, the count); the user is the target | TC-SA-20-02-002 |
| 2.1 Targeted Push Notifications | Rule: the notification content is the message (the content of the notification, the title, the body); the content is the payload | TC-SA-20-02-003 |
| 2.1 Targeted Push Notifications | Rule: the notification trigger is the condition (the trigger of the notification, e.g., the event, the schedule); the trigger is the rule | TC-SA-20-02-004 |
| 2.1 Targeted Push Notifications | Rule: the push is sent (the notifications, the users, the content, the dates); the alert is managed | TC-SA-20-02-007 |
| 2.1 Targeted Push Notifications | Rule: push notification sending is audit-logged with the notification, user, and timestamp | TC-SA-20-02-008 |
| 2.2 Banner Announcements | Banner: the banner (the banner, the content, the audience, the date) | TC-SA-20-02-009 |
| 2.2 Banner Announcements | Banner content: the content (the content of the banner, the text, the image, the link) | TC-SA-20-02-010 |
| 2.2 Banner Announcements | Banner audience: the audience (the audience of the banner, the segment, the count) | TC-SA-20-02-011 |
| 2.2 Banner Announcements | Banner date: the date (the date of the banner, the start, the end) | TC-SA-20-02-012 |
| 2.2 Banner Announcements | Banner position: the position (the position of the banner, e.g., the top, the bottom) | TC-SA-20-02-013 |
| 2.2 Banner Announcements | Banner status: the status (the active, the scheduled, the expired) | TC-SA-20-02-014 |
| 2.2 Banner Announcements | Banner view: the view (the banners, the content, the audiences, the dates) | TC-SA-20-02-015 |
| 2.2 Banner Announcements | Audit logging of the banner configuration | TC-SA-20-02-016 |
| 2.2 Banner Announcements | Rule: the banner is the display (the banner, the content, the audience, the date); the banner is the announcement | TC-SA-20-02-009 |
| 2.2 Banner Announcements | Rule: the banner content is the message (the content of the banner, the text, the image, the link); the content is the payload | TC-SA-20-02-010 |
| 2.2 Banner Announcements | Rule: the banner audience is the target (the audience of the banner, the segment, the count); the audience is the recipient | TC-SA-20-02-011 |
| 2.2 Banner Announcements | Rule: the banner date is the period (the date of the banner, the start, the end); the date is the schedule | TC-SA-20-02-012 |
| 2.2 Banner Announcements | Rule: the banner is shown (the banners, the content, the audiences, the dates); the display is managed | TC-SA-20-02-015 |
| 2.2 Banner Announcements | Rule: banner configuration is audit-logged with the banner, audience, and timestamp | TC-SA-20-02-016 |
| 2.3 Popup Messages for Offers | Popup: the popup (the popup, the offer, the audience, the date) | TC-SA-20-02-017 |
| 2.3 Popup Messages for Offers | Offer: the offer (the offer, the type, the value, the code) | TC-SA-20-02-018 |
| 2.3 Popup Messages for Offers | Popup content: the content (the content of the popup, the text, the image, the button) | TC-SA-20-02-019 |
| 2.3 Popup Messages for Offers | Popup audience: the audience (the audience of the popup, the segment, the count) | TC-SA-20-02-020 |
| 2.3 Popup Messages for Offers | Popup date: the date (the date of the popup, the start, the end) | TC-SA-20-02-021 |
| 2.3 Popup Messages for Offers | Popup frequency: the frequency (the frequency of the popup, e.g., the once, the daily) | TC-SA-20-02-022 |
| 2.3 Popup Messages for Offers | Popup status: the status (the active, the scheduled, the expired) | TC-SA-20-02-023 |
| 2.3 Popup Messages for Offers | Audit logging of the popup configuration | TC-SA-20-02-024 |
| 2.3 Popup Messages for Offers | Rule: the popup is the display (the popup, the offer, the audience, the date); the popup is the announcement | TC-SA-20-02-017 |
| 2.3 Popup Messages for Offers | Rule: the offer is the promotion (the offer, the type, the value, the code); the offer is the incentive | TC-SA-20-02-018 |
| 2.3 Popup Messages for Offers | Rule: the popup audience is the target (the audience of the popup, the segment, the count); the audience is the recipient | TC-SA-20-02-020 |
| 2.3 Popup Messages for Offers | Rule: the popup frequency is the cadence (the frequency of the popup, e.g., the once, the daily); the frequency is the control | TC-SA-20-02-022 |
| 2.3 Popup Messages for Offers | Rule: the popup is shown (the popups, the offers, the audiences, the dates); the display is managed | TC-SA-20-02-023 |
| 2.3 Popup Messages for Offers | Rule: popup configuration is audit-logged with the popup, offer, and timestamp | TC-SA-20-02-024 |
| 2.4 Scheduled Notifications | Schedule: the schedule (the schedule, the notification, the date, the time) | TC-SA-20-02-025 |
| 2.4 Scheduled Notifications | Notification: the notification (the notification, the content, the audience) | TC-SA-20-02-026 |
| 2.4 Scheduled Notifications | Schedule date: the date (the date of the schedule, the day) | TC-SA-20-02-027 |
| 2.4 Scheduled Notifications | Schedule time: the time (the time of the schedule, the hour) | TC-SA-20-02-028 |
| 2.4 Scheduled Notifications | Schedule status: the status (the scheduled, the sent, the completed) | TC-SA-20-02-029 |
| 2.4 Scheduled Notifications | Schedule repeat: the repeat (the repeat of the schedule, e.g., the daily, the weekly) | TC-SA-20-02-030 |
| 2.4 Scheduled Notifications | Schedule view: the view (the schedules, the notifications, the dates, the times) | TC-SA-20-02-031 |
| 2.4 Scheduled Notifications | Audit logging of the notification schedule configuration | TC-SA-20-02-032 |
| 2.4 Scheduled Notifications | Rule: the schedule is the automation (the schedule, the notification, the date, the time); the schedule is the plan | TC-SA-20-02-025 |
| 2.4 Scheduled Notifications | Rule: the notification is the message (the notification, the content, the audience); the notification is the payload | TC-SA-20-02-026 |
| 2.4 Scheduled Notifications | Rule: the schedule date is the day (the date of the schedule, the day); the date is the when | TC-SA-20-02-027 |
| 2.4 Scheduled Notifications | Rule: the schedule repeat is the cadence (the repeat of the schedule, e.g., the daily, the weekly); the repeat is the frequency | TC-SA-20-02-030 |
| 2.4 Scheduled Notifications | Rule: the schedule is set (the schedules, the notifications, the dates, the times); the automation is managed | TC-SA-20-02-031 |
| 2.4 Scheduled Notifications | Rule: notification schedule configuration is audit-logged with the schedule, date, and timestamp | TC-SA-20-02-032 |

## 2.1 Targeted Push Notifications

### TC-SA-20-02-001 — Push notification: the notification (the notification, the user, the content, the trigger, the date); the notification is the message
**Type:** Positive
**Covers:** 2.1 → Push notification: the notification (the notification, the user, the content, the trigger, the date); Rule: the push notification is the alert (the notification, the user, the content, the trigger, the date); the notification is the message
**Preconditions:** Super Admin is logged in; target users exist.
**Steps:**
1. Open Marketing & Communication → In-App Notifications → Targeted Push Notifications.
2. Send the push notification: the notification (the notification, the user, the content, the trigger, the date) — verify the push notification is the alert.
3. Verify the notification shows the user, the content, the trigger, and the date.
4. Send the notification — verify the target users receive it in-app.
**Expected Result:** The push notification is sent — the notification, the user, the content, the trigger, and the date are the message.
**Priority:** Critical

### TC-SA-20-02-002 — Target user: the user (the target user, the segment, the count); the user is the target
**Type:** Positive
**Covers:** 2.1 → Target user: the user (the target user, the segment, the count); Rule: the target user is the recipient (the target user, the segment, the count); the user is the target
**Preconditions:** Multiple user segments exist.
**Steps:**
1. Select the target users: the user (the target user, the segment, the count) — verify the target user is the recipient.
2. Verify the selection shows the segment and the count.
3. Verify the notification is delivered only to the selected users.
**Expected Result:** The target users are selected — the target user, the segment, and the count are the target.
**Priority:** High

### TC-SA-20-02-003 — Notification content: the content (the content of the notification, the title, the body); the content is the payload
**Type:** Positive
**Covers:** 2.1 → Notification content: the content (the content of the notification, the title, the body); Rule: the notification content is the message (the content of the notification, the title, the body); the content is the payload
**Preconditions:** A push notification is being configured.
**Steps:**
1. Create the notification content: the content (the content of the notification, the title, the body) — verify the notification content is the message.
2. Verify the content shows the title and the body.
3. Verify the content renders correctly in the in-app notification area.
**Expected Result:** The notification content is created — the content of the notification, the title, and the body are the payload.
**Priority:** High

### TC-SA-20-02-004 — Notification trigger: the trigger (the trigger of the notification, e.g., the event, the schedule); the trigger is the rule
**Type:** Edge
**Covers:** 2.1 → Notification trigger: the trigger (the trigger of the notification, e.g., the event, the schedule); Rule: the notification trigger is the condition (the trigger of the notification, e.g., the event, the schedule); the trigger is the rule
**Preconditions:** A push notification is configured with an event trigger; the same event firing twice (duplicate trigger edge) is also prepared.
**Steps:**
1. Set the notification trigger: the trigger (the trigger of the notification, e.g., the event, the schedule) — verify the notification trigger is the condition.
2. The event fires — verify the notification is sent exactly once.
3. The same event fires again — verify no duplicate notification is sent (or the documented repeat behavior applies).
**Expected Result:** The notification trigger works — the trigger of the notification (the event, the schedule) is the rule; duplicate events are handled.
**Priority:** High

### TC-SA-20-02-005 — Notification date: the date (the date of the notification, the time); the date is the moment
**Type:** Positive
**Covers:** 2.1 → Notification date: the date (the date of the notification, the time)
**Preconditions:** A push notification is configured with a future date.
**Steps:**
1. Set the notification date: the date (the date of the notification, the time) — verify the notification date is the moment.
2. Verify the notification is not sent before the date.
3. Wait for the date — verify the notification is sent at the exact time.
**Expected Result:** The notification date is set — the date of the notification and the time are the moment.
**Priority:** High

### TC-SA-20-02-006 — Notification status: the status (the sent, the delivered, the read); the status is the state
**Type:** Positive
**Covers:** 2.1 → Notification status: the status (the sent, the delivered, the read)
**Preconditions:** Push notifications with sent, delivered, and read statuses exist.
**Steps:**
1. View the notification status: the status (the sent, the delivered, the read) — verify the notification status is the state.
2. A user opens the app — verify the status updates to delivered.
3. A user opens the notification — verify the status updates to read.
**Expected Result:** The notification status is shown — the sent, the delivered, and the read are the state.
**Priority:** High

### TC-SA-20-02-007 — Notification view: the view (the notifications, the users, the content, the dates); the alert is managed
**Type:** Positive
**Covers:** 2.1 → Notification view: the view (the notifications, the users, the content, the dates); Rule: the push is sent (the notifications, the users, the content, the dates); the alert is managed
**Preconditions:** Multiple push notifications exist.
**Steps:**
1. View the notifications: the view (the notifications, the users, the content, the dates) — verify the push is sent.
2. Verify each notification shows the users, the content, and the dates.
3. Verify the alert is managed (create, send, track).
**Expected Result:** The notifications are viewed — the notifications, the users, the content, and the dates are visible; the alert is managed.
**Priority:** High

### TC-SA-20-02-008 — Push notification sending is audit-logged with the notification, user, and timestamp
**Type:** Positive
**Covers:** 2.1 → Audit logging of the push notification sending; Rule: push notification sending is audit-logged with the notification, user, and timestamp
**Preconditions:** Super Admin has sent a push notification.
**Steps:**
1. Open the audit trail and filter by "push notification".
2. Verify entries show the notification, the user, and the timestamp.
**Expected Result:** The push notification sending is audit-logged with the notification, user, and timestamp.
**Priority:** Critical

## 2.2 Banner Announcements

### TC-SA-20-02-009 — Banner: the banner (the banner, the content, the audience, the date); the banner is the announcement
**Type:** Positive
**Covers:** 2.2 → Banner: the banner (the banner, the content, the audience, the date); Rule: the banner is the display (the banner, the content, the audience, the date); the banner is the announcement
**Preconditions:** Super Admin is logged in; an audience is available.
**Steps:**
1. Open Marketing & Communication → In-App Notifications → Banner Announcements.
2. Show the banner: the banner (the banner, the content, the audience, the date) — verify the banner is the display.
3. Verify the banner shows the content, the audience, and the date.
4. A user in the audience opens the app — verify the banner is visible.
**Expected Result:** The banner is shown — the banner, the content, the audience, and the date are the announcement.
**Priority:** Critical

### TC-SA-20-02-010 — Banner content: the content (the content of the banner, the text, the image, the link); the content is the payload
**Type:** Positive
**Covers:** 2.2 → Banner content: the content (the content of the banner, the text, the image, the link); Rule: the banner content is the message (the content of the banner, the text, the image, the link); the content is the payload
**Preconditions:** A banner is being configured.
**Steps:**
1. Create the banner content: the content (the content of the banner, the text, the image, the link) — verify the banner content is the message.
2. Verify the content shows the text, the image, and the link.
3. Click the banner link — verify it navigates to the correct destination.
**Expected Result:** The banner content is created — the content of the banner, the text, the image, and the link are the payload.
**Priority:** High

### TC-SA-20-02-011 — Banner audience: the audience (the audience of the banner, the segment, the count); the audience is the recipient
**Type:** Positive
**Covers:** 2.2 → Banner audience: the audience (the audience of the banner, the segment, the count); Rule: the banner audience is the target (the audience of the banner, the segment, the count); the audience is the recipient
**Preconditions:** Multiple audience segments exist.
**Steps:**
1. Select the banner audience: the audience (the audience of the banner, the segment, the count) — verify the banner audience is the target.
2. Verify the audience shows the segment and the count.
3. Verify the banner is shown only to the selected audience (a user outside the audience sees no banner).
**Expected Result:** The banner audience is selected — the audience of the banner, the segment, and the count are the recipient.
**Priority:** High

### TC-SA-20-02-012 — Banner date: the date (the date of the banner, the start, the end); the date is the schedule
**Type:** Edge
**Covers:** 2.2 → Banner date: the date (the date of the banner, the start, the end); Rule: the banner date is the period (the date of the banner, the start, the end); the date is the schedule
**Preconditions:** A banner is configured with a start and end date; the end date is about to pass (expiry edge).
**Steps:**
1. Set the banner date: the date (the date of the banner, the start, the end) — verify the banner date is the period.
2. Before the start date — verify the banner is not shown.
3. Between start and end — verify the banner is shown; after the end date — verify the banner disappears.
**Expected Result:** The banner date is set — the date of the banner, the start, and the end are the schedule; the banner appears and disappears exactly at the boundaries.
**Priority:** High

### TC-SA-20-02-013 — Banner position: the position (the position of the banner, e.g., the top, the bottom); the position is the location
**Type:** Positive
**Covers:** 2.2 → Banner position: the position (the position of the banner, e.g., the top, the bottom)
**Preconditions:** Banners with top and bottom positions exist.
**Steps:**
1. Set the banner position: the position (the position of the banner, e.g., the top, the bottom) — verify the banner position is the location.
2. Verify a top-positioned banner renders at the top of the app.
3. Verify a bottom-positioned banner renders at the bottom of the app.
**Expected Result:** The banner position is set — the position of the banner (the top, the bottom) is the location.
**Priority:** High

### TC-SA-20-02-014 — Banner status: the status (the active, the scheduled, the expired); the status is the state
**Type:** Positive
**Covers:** 2.2 → Banner status: the status (the active, the scheduled, the expired)
**Preconditions:** Banners with active, scheduled, and expired statuses exist.
**Steps:**
1. View the banner status: the status (the active, the scheduled, the expired) — verify the banner status is the state.
2. Verify a banner before its start date shows scheduled; during the period, active; after the end date, expired.
3. Verify the status transitions are automatic and correct.
**Expected Result:** The banner status is shown — the active, the scheduled, and the expired are the state.
**Priority:** High

### TC-SA-20-02-015 — Banner view: the view (the banners, the content, the audiences, the dates); the display is managed
**Type:** Positive
**Covers:** 2.2 → Banner view: the view (the banners, the content, the audiences, the dates); Rule: the banner is shown (the banners, the content, the audiences, the dates); the display is managed
**Preconditions:** Multiple banners exist.
**Steps:**
1. View the banners: the view (the banners, the content, the audiences, the dates) — verify the banner is shown.
2. Verify each banner shows the content, the audiences, and the dates.
3. Verify the display is managed (create, schedule, deactivate).
**Expected Result:** The banners are viewed — the banners, the content, the audiences, and the dates are visible; the display is managed.
**Priority:** High

### TC-SA-20-02-016 — Banner configuration is audit-logged with the banner, audience, and timestamp
**Type:** Positive
**Covers:** 2.2 → Audit logging of the banner configuration; Rule: banner configuration is audit-logged with the banner, audience, and timestamp
**Preconditions:** Super Admin has configured a banner.
**Steps:**
1. Open the audit trail and filter by "banner".
2. Verify entries show the banner, the audience, and the timestamp.
**Expected Result:** The banner configuration is audit-logged with the banner, audience, and timestamp.
**Priority:** Critical

## 2.3 Popup Messages for Offers

### TC-SA-20-02-017 — Popup: the popup (the popup, the offer, the audience, the date); the popup is the announcement
**Type:** Positive
**Covers:** 2.3 → Popup: the popup (the popup, the offer, the audience, the date); Rule: the popup is the display (the popup, the offer, the audience, the date); the popup is the announcement
**Preconditions:** Super Admin is logged in; an offer and an audience are available.
**Steps:**
1. Open Marketing & Communication → In-App Notifications → Popup Messages for Offers.
2. Show the popup: the popup (the popup, the offer, the audience, the date) — verify the popup is the display.
3. Verify the popup shows the offer, the audience, and the date.
4. A user in the audience opens the app — verify the popup appears.
**Expected Result:** The popup is shown — the popup, the offer, the audience, and the date are the announcement.
**Priority:** Critical

### TC-SA-20-02-018 — Offer: the offer (the offer, the type, the value, the code); the offer is the incentive
**Type:** Positive
**Covers:** 2.3 → Offer: the offer (the offer, the type, the value, the code); Rule: the offer is the promotion (the offer, the type, the value, the code); the offer is the incentive
**Preconditions:** Offers with type, value, and code exist.
**Steps:**
1. Select the offer: the offer (the offer, the type, the value, the code) — verify the offer is the promotion.
2. Verify the offer shows the type, the value, and the code.
3. Verify the offer code in the popup is valid and redeemable.
**Expected Result:** The offer is selected — the offer, the type, the value, and the code are the incentive.
**Priority:** High

### TC-SA-20-02-019 — Popup content: the content (the content of the popup, the text, the image, the button); the content is the message
**Type:** Positive
**Covers:** 2.3 → Popup content: the content (the content of the popup, the text, the image, the button)
**Preconditions:** A popup is being configured.
**Steps:**
1. Create the popup content: the content (the content of the popup, the text, the image, the button) — verify the popup content is the message.
2. Verify the content shows the text, the image, and the button.
3. Click the popup button — verify it performs the intended action.
**Expected Result:** The popup content is created — the content of the popup, the text, the image, and the button are the message.
**Priority:** High

### TC-SA-20-02-020 — Popup audience: the audience (the audience of the popup, the segment, the count); the audience is the recipient
**Type:** Positive
**Covers:** 2.3 → Popup audience: the audience (the audience of the popup, the segment, the count); Rule: the popup audience is the target (the audience of the popup, the segment, the count); the audience is the recipient
**Preconditions:** Multiple audience segments exist.
**Steps:**
1. Select the popup audience: the audience (the audience of the popup, the segment, the count) — verify the popup audience is the target.
2. Verify the audience shows the segment and the count.
3. Verify the popup is shown only to the selected audience.
**Expected Result:** The popup audience is selected — the audience of the popup, the segment, and the count are the recipient.
**Priority:** High

### TC-SA-20-02-021 — Popup date: the date (the date of the popup, the start, the end); the date is the period
**Type:** Positive
**Covers:** 2.3 → Popup date: the date (the date of the popup, the start, the end)
**Preconditions:** A popup is configured with a start and end date.
**Steps:**
1. Set the popup date: the date (the date of the popup, the start, the end) — verify the popup date is the period.
2. Before the start date — verify the popup is not shown.
3. Between start and end — verify the popup is shown; after the end date — verify the popup disappears.
**Expected Result:** The popup date is set — the date of the popup, the start, and the end are the period.
**Priority:** High

### TC-SA-20-02-022 — Popup frequency: the frequency (the frequency of the popup, e.g., the once, the daily); the frequency is the control
**Type:** Edge
**Covers:** 2.3 → Popup frequency: the frequency (the frequency of the popup, e.g., the once, the daily); Rule: the popup frequency is the cadence (the frequency of the popup, e.g., the once, the daily); the frequency is the control
**Preconditions:** A popup is configured with "once" frequency; a "daily" popup also exists; a user opens the app multiple times in one day (frequency edge).
**Steps:**
1. Set the popup frequency: the frequency (the frequency of the popup, e.g., the once, the daily) — verify the popup frequency is the cadence.
2. A user opens the app 5 times — verify the "once" popup appears exactly once and never again.
3. Verify the "daily" popup appears at most once per day for the user.
**Expected Result:** The popup frequency is set — the frequency of the popup (the once, the daily) is the control; no user is spammed beyond the cadence.
**Priority:** High

### TC-SA-20-02-023 — Popup status: the status (the active, the scheduled, the expired); the display is managed
**Type:** Positive
**Covers:** 2.3 → Popup status: the status (the active, the scheduled, the expired); Rule: the popup is shown (the popups, the offers, the audiences, the dates); the display is managed
**Preconditions:** Popups with active, scheduled, and expired statuses exist.
**Steps:**
1. View the popup status: the status (the active, the scheduled, the expired) — verify the popup status is the state.
2. Verify a popup before its start date shows scheduled; during the period, active; after the end date, expired.
3. Verify the display is managed (create, schedule, deactivate).
**Expected Result:** The popup status is shown — the active, the scheduled, and the expired are the state; the display is managed.
**Priority:** High

### TC-SA-20-02-024 — Popup configuration is audit-logged with the popup, offer, and timestamp
**Type:** Positive
**Covers:** 2.3 → Audit logging of the popup configuration; Rule: popup configuration is audit-logged with the popup, offer, and timestamp
**Preconditions:** Super Admin has configured a popup.
**Steps:**
1. Open the audit trail and filter by "popup".
2. Verify entries show the popup, the offer, and the timestamp.
**Expected Result:** The popup configuration is audit-logged with the popup, offer, and timestamp.
**Priority:** Critical

## 2.4 Scheduled Notifications

### TC-SA-20-02-025 — Schedule: the schedule (the schedule, the notification, the date, the time); the schedule is the plan
**Type:** Positive
**Covers:** 2.4 → Schedule: the schedule (the schedule, the notification, the date, the time); Rule: the schedule is the automation (the schedule, the notification, the date, the time); the schedule is the plan
**Preconditions:** Super Admin is logged in; a notification is available.
**Steps:**
1. Open Marketing & Communication → In-App Notifications → Scheduled Notifications.
2. Schedule the notification: the schedule (the schedule, the notification, the date, the time) — verify the schedule is the automation.
3. Verify the schedule shows the notification, the date, and the time.
4. Wait for the scheduled time — verify the notification is sent automatically.
**Expected Result:** The schedule is set — the schedule, the notification, the date, and the time are the plan.
**Priority:** Critical

### TC-SA-20-02-026 — Notification: the notification (the notification, the content, the audience); the notification is the payload
**Type:** Positive
**Covers:** 2.4 → Notification: the notification (the notification, the content, the audience); Rule: the notification is the message (the notification, the content, the audience); the notification is the payload
**Preconditions:** A schedule is being configured.
**Steps:**
1. Create the notification: the notification (the notification, the content, the audience) — verify the notification is the message.
2. Verify the notification shows the content and the audience.
3. Verify the scheduled notification delivers the exact content to the audience.
**Expected Result:** The notification is created — the notification, the content, and the audience are the payload.
**Priority:** High

### TC-SA-20-02-027 — Schedule date: the date (the date of the schedule, the day); the date is the when
**Type:** Positive
**Covers:** 2.4 → Schedule date: the date (the date of the schedule, the day); Rule: the schedule date is the day (the date of the schedule, the day); the date is the when
**Preconditions:** A schedule is being configured.
**Steps:**
1. Set the schedule date: the date (the date of the schedule, the day) — verify the schedule date is the day.
2. Verify the notification is not sent before the schedule date.
3. Verify the notification is sent on the schedule date.
**Expected Result:** The schedule date is set — the date of the schedule and the day are the when.
**Priority:** High

### TC-SA-20-02-028 — Schedule time: the time (the time of the schedule, the hour); the time is the moment
**Type:** Positive
**Covers:** 2.4 → Schedule time: the time (the time of the schedule, the hour)
**Preconditions:** A schedule is configured with a specific time.
**Steps:**
1. Set the schedule time: the time (the time of the schedule, the hour) — verify the schedule time is the moment.
2. Verify the notification is sent at the exact scheduled hour.
3. Verify the time is shown on the schedule.
**Expected Result:** The schedule time is set — the time of the schedule and the hour are the moment.
**Priority:** High

### TC-SA-20-02-029 — Schedule status: the status (the scheduled, the sent, the completed); the status is the state
**Type:** Positive
**Covers:** 2.4 → Schedule status: the status (the scheduled, the sent, the completed)
**Preconditions:** Schedules with scheduled, sent, and completed statuses exist.
**Steps:**
1. View the schedule status: the status (the scheduled, the sent, the completed) — verify the schedule status is the state.
2. Verify a schedule before its time shows scheduled; after firing, sent; after delivery completes, completed.
3. Verify the status transitions are correct.
**Expected Result:** The schedule status is shown — the scheduled, the sent, and the completed are the state.
**Priority:** High

### TC-SA-20-02-030 — Schedule repeat: the repeat (the repeat of the schedule, e.g., the daily, the weekly); the repeat is the frequency
**Type:** Edge
**Covers:** 2.4 → Schedule repeat: the repeat (the repeat of the schedule, e.g., the daily, the weekly); Rule: the schedule repeat is the cadence (the repeat of the schedule, e.g., the daily, the weekly); the repeat is the frequency
**Preconditions:** A schedule is configured with daily repeat; a weekly repeat schedule also exists; a week of observation (repeat edge) is prepared.
**Steps:**
1. Set the schedule repeat: the repeat (the repeat of the schedule, e.g., the daily, the weekly) — verify the schedule repeat is the cadence.
2. Observe for 3 days — verify the daily schedule fires exactly once per day (no double-fires, no missed days).
3. Observe the weekly schedule — verify it fires exactly once per week on the configured day.
**Expected Result:** The schedule repeat works — the repeat of the schedule (the daily, the weekly) is the frequency; repeats fire exactly on cadence.
**Priority:** High

### TC-SA-20-02-031 — Schedule view: the view (the schedules, the notifications, the dates, the times); the automation is managed
**Type:** Positive
**Covers:** 2.4 → Schedule view: the view (the schedules, the notifications, the dates, the times); Rule: the schedule is set (the schedules, the notifications, the dates, the times); the automation is managed
**Preconditions:** Multiple schedules exist.
**Steps:**
1. View the schedules: the view (the schedules, the notifications, the dates, the times) — verify the schedule is set.
2. Verify each schedule shows the notification, the dates, and the times.
3. Verify the automation is managed (create, edit, cancel).
**Expected Result:** The schedules are viewed — the schedules, the notifications, the dates, and the times are visible; the automation is managed.
**Priority:** High

### TC-SA-20-02-032 — Notification schedule configuration is audit-logged with the schedule, date, and timestamp
**Type:** Positive
**Covers:** 2.4 → Audit logging of the notification schedule configuration; Rule: notification schedule configuration is audit-logged with the schedule, date, and timestamp
**Preconditions:** Super Admin has configured a notification schedule.
**Steps:**
1. Open the audit trail and filter by "notification schedule".
2. Verify entries show the schedule, the date, and the timestamp.
**Expected Result:** The notification schedule configuration is audit-logged with the schedule, date, and timestamp.
**Priority:** Critical
