# 4. Link Requests & Notifications — Test Cases

User Type: **Parent**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: link_requests_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 |
|---------|--------------------|----------|
| 4.1 Pending Link Requests | List of pending link requests | TC-PT-2-04-001 |
| 4.1 Pending Link Requests | Request status (pending, accepted, declined, expired) | TC-PT-2-04-002 |
| 4.1 Pending Link Requests | Child name and time sent shown | TC-PT-2-04-003 |
| 4.1 Pending Link Requests | Resend a pending request | TC-PT-2-04-004 |
| 4.1 Pending Link Requests | Cancel a pending request | TC-PT-2-04-005 |
| 4.1 Pending Link Requests | Request expiry indicator | TC-PT-2-04-006 |
| 4.1 Pending Link Requests | Request event logging (resent, cancelled) | TC-PT-2-04-007 |
| 4.1 Pending Link Requests | Audit logging of the pending link requests | TC-PT-2-04-008 |
| 4.1 Pending Link Requests | Rule: The list shows pending link requests. | TC-PT-2-04-001 |
| 4.1 Pending Link Requests | Rule: A pending request can be resent or cancelled. | TC-PT-2-04-002 |
| 4.1 Pending Link Requests | Rule: The request expiry is indicated. | TC-PT-2-04-003 |
| 4.1 Pending Link Requests | Rule: Request events (resent, cancelled) are logged with the account and the timestamp. | TC-PT-2-04-004 |
| 4.1 Pending Link Requests | Rule: The pending link requests is audit-logged with the account and the timestamp. | TC-PT-2-04-005 |
| 4.2 Link Event Notifications | Notification on a request accepted | TC-PT-2-04-009 |
| 4.2 Link Event Notifications | Notification on a request declined | TC-PT-2-04-010 |
| 4.2 Link Event Notifications | Notification on a request expired | TC-PT-2-04-011 |
| 4.2 Link Event Notifications | Notification on a child unlinked | TC-PT-2-04-012 |
| 4.2 Link Event Notifications | In-app and email notification channels | TC-PT-2-04-013 |
| 4.2 Link Event Notifications | Notification event logging (sent, opened) | TC-PT-2-04-014 |
| 4.2 Link Event Notifications | Audit logging of the link event notifications | TC-PT-2-04-015 |
| 4.2 Link Event Notifications | Rule: The Parent is notified of link events. | TC-PT-2-04-009 |
| 4.2 Link Event Notifications | Rule: The notification channels are in-app and email. | TC-PT-2-04-010 |
| 4.2 Link Event Notifications | Rule: A notification is tappable to the relevant screen. | TC-PT-2-04-011 |
| 4.2 Link Event Notifications | Rule: Notification events (sent, opened) are logged with the account and the timestamp. | TC-PT-2-04-012 |
| 4.2 Link Event Notifications | Rule: The link event notifications is audit-logged with the account and the timestamp. | TC-PT-2-04-013 |
| 4.3 Invitation Management | View the invitation history | TC-PT-2-04-016 |
| 4.3 Invitation Management | Active and used invitations shown | TC-PT-2-04-017 |
| 4.3 Invitation Management | Create a reusable invitation for a child | TC-PT-2-04-018 |
| 4.3 Invitation Management | Mark used/expired invitations | TC-PT-2-04-019 |
| 4.3 Invitation Management | Invitation history available on web and mobile | TC-PT-2-04-020 |
| 4.3 Invitation Management | Invitation event logging (created, used, expired) | TC-PT-2-04-021 |
| 4.3 Invitation Management | Audit logging of the invitation management | TC-PT-2-04-022 |
| 4.3 Invitation Management | Rule: The invitation history is retained. | TC-PT-2-04-016 |
| 4.3 Invitation Management | Rule: A reusable invitation can be created. | TC-PT-2-04-017 |
| 4.3 Invitation Management | Rule: Used and expired invitations are marked. | TC-PT-2-04-018 |
| 4.3 Invitation Management | Rule: Invitation events (created, used, expired) are logged with the account and the timestamp. | TC-PT-2-04-019 |
| 4.3 Invitation Management | Rule: The invitation management is audit-logged with the account and the timestamp. | TC-PT-2-04-020 |

## 4.1 Pending Link Requests

### TC-PT-2-04-001 — List of pending link requests
**Type:** Positive
**Covers:** 4.1 → List of pending link requests; Rule: The list shows pending link requests.
**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: List of pending link requests.
2. Observe the result and verify the full behavior: List of pending link requests.
**Expected Result:** List of pending link requests — delivered exactly as documented.
**Priority:** Critical

### TC-PT-2-04-002 — Request status (pending, accepted, declined, expired)
**Type:** Edge
**Covers:** 4.1 → Request status (pending, accepted, declined, expired); Rule: A pending request can be resent or cancelled.
**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: Request status (pending.
2. Observe the result and verify the full behavior: Request status (pending, accepted, declined, expired).
**Expected Result:** Request status (pending, accepted, declined, expired) — delivered exactly as documented.
**Priority:** High

### TC-PT-2-04-003 — Child name and time sent shown
**Type:** Positive
**Covers:** 4.1 → Child name and time sent shown; Rule: The request expiry is indicated.
**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: Child name and time sent shown.
2. Observe the result and verify the full behavior: Child name and time sent shown.
**Expected Result:** Child name and time sent shown — delivered exactly as documented.
**Priority:** High

### TC-PT-2-04-004 — Resend a pending request
**Type:** Positive
**Covers:** 4.1 → Resend a pending request; Rule: Request events (resent, cancelled) 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: Resend a pending request.
2. Observe the result and verify the full behavior: Resend a pending request.
**Expected Result:** Resend a pending request — delivered exactly as documented.
**Priority:** High

### TC-PT-2-04-005 — Cancel a pending request
**Type:** Positive
**Covers:** 4.1 → Cancel a pending request; Rule: The pending link requests 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: Cancel a pending request.
2. Observe the result and verify the full behavior: Cancel a pending request.
**Expected Result:** Cancel a pending request — delivered exactly as documented.
**Priority:** High

### TC-PT-2-04-006 — Request expiry indicator
**Type:** Edge
**Covers:** 4.1 → Request expiry indicator
**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: Request expiry indicator.
2. Observe the result and verify the full behavior: Request expiry indicator.
**Expected Result:** Request expiry indicator — delivered exactly as documented.
**Priority:** High

### TC-PT-2-04-007 — Request event logging (resent, cancelled)
**Type:** Positive
**Covers:** 4.1 → Request event logging (resent, cancelled)
**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: Request event logging (resent.
2. Observe the result and verify the full behavior: Request event logging (resent, cancelled).
**Expected Result:** Request event logging (resent, cancelled) — delivered exactly as documented.
**Priority:** High

### TC-PT-2-04-008 — Audit logging of the pending link requests
**Type:** Positive
**Covers:** 4.1 → Audit logging of the pending link requests
**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 pending link requests.
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

## 4.2 Link Event Notifications

### TC-PT-2-04-009 — Notification on a request accepted
**Type:** Positive
**Covers:** 4.2 → Notification on a request accepted; Rule: The Parent is notified of link events.
**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 on a request accepted.
2. Observe the result and verify the full behavior: Notification on a request accepted.
**Expected Result:** Notification on a request accepted — delivered exactly as documented.
**Priority:** Critical

### TC-PT-2-04-010 — Notification on a request declined
**Type:** Positive
**Covers:** 4.2 → Notification on a request declined; Rule: The notification channels are in-app and email.
**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 on a request declined.
2. Observe the result and verify the full behavior: Notification on a request declined.
**Expected Result:** Notification on a request declined — delivered exactly as documented.
**Priority:** High

### TC-PT-2-04-011 — Notification on a request expired
**Type:** Edge
**Covers:** 4.2 → Notification on a request expired; Rule: A notification is tappable to the relevant screen.
**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 on a request expired.
2. Observe the result and verify the full behavior: Notification on a request expired.
**Expected Result:** Notification on a request expired — delivered exactly as documented.
**Priority:** High

### TC-PT-2-04-012 — Notification on a child unlinked
**Type:** Positive
**Covers:** 4.2 → Notification on a child unlinked; Rule: Notification events (sent, opened) 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: Notification on a child unlinked.
2. Observe the result and verify the full behavior: Notification on a child unlinked.
**Expected Result:** Notification on a child unlinked — delivered exactly as documented.
**Priority:** High

### TC-PT-2-04-013 — In-app and email notification channels
**Type:** Positive
**Covers:** 4.2 → In-app and email notification channels; Rule: The link event notifications 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: In-app and email notification channels.
2. Observe the result and verify the full behavior: In-app and email notification channels.
**Expected Result:** In-app and email notification channels — delivered exactly as documented.
**Priority:** High

### TC-PT-2-04-014 — Notification event logging (sent, opened)
**Type:** Positive
**Covers:** 4.2 → Notification event logging (sent, opened)
**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 event logging (sent.
2. Observe the result and verify the full behavior: Notification event logging (sent, opened).
**Expected Result:** Notification event logging (sent, opened) — delivered exactly as documented.
**Priority:** High

### TC-PT-2-04-015 — Audit logging of the link event notifications
**Type:** Positive
**Covers:** 4.2 → Audit logging of the link event notifications
**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 link event notifications.
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

## 4.3 Invitation Management

### TC-PT-2-04-016 — View the invitation history
**Type:** Positive
**Covers:** 4.3 → View the invitation history; Rule: The invitation history is retained.
**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: View the invitation history.
2. Observe the result and verify the full behavior: View the invitation history.
**Expected Result:** View the invitation history — delivered exactly as documented.
**Priority:** Critical

### TC-PT-2-04-017 — Active and used invitations shown
**Type:** Positive
**Covers:** 4.3 → Active and used invitations shown; Rule: A reusable invitation can be created.
**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: Active and used invitations shown.
2. Observe the result and verify the full behavior: Active and used invitations shown.
**Expected Result:** Active and used invitations shown — delivered exactly as documented.
**Priority:** High

### TC-PT-2-04-018 — Create a reusable invitation for a child
**Type:** Positive
**Covers:** 4.3 → Create a reusable invitation for a child; Rule: Used and expired invitations are marked.
**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: Create a reusable invitation for a child.
2. Observe the result and verify the full behavior: Create a reusable invitation for a child.
**Expected Result:** Create a reusable invitation for a child — delivered exactly as documented.
**Priority:** High

### TC-PT-2-04-019 — Mark used/expired invitations
**Type:** Edge
**Covers:** 4.3 → Mark used/expired invitations; Rule: Invitation events (created, used, expired) 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: Mark used/expired invitations.
2. Observe the result and verify the full behavior: Mark used/expired invitations.
**Expected Result:** Mark used/expired invitations — delivered exactly as documented.
**Priority:** High

### TC-PT-2-04-020 — Invitation history available on web and mobile
**Type:** Positive
**Covers:** 4.3 → Invitation history available on web and mobile; Rule: The invitation management 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: Invitation history available on web and mobile.
2. Observe the result and verify the full behavior: Invitation history available on web and mobile.
**Expected Result:** Invitation history available on web and mobile — delivered exactly as documented.
**Priority:** High

### TC-PT-2-04-021 — Invitation event logging (created, used, expired)
**Type:** Edge
**Covers:** 4.3 → Invitation event logging (created, used, expired)
**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: Invitation event logging (created.
2. Observe the result and verify the full behavior: Invitation event logging (created, used, expired).
**Expected Result:** Invitation event logging (created, used, expired) — delivered exactly as documented.
**Priority:** High

### TC-PT-2-04-022 — Audit logging of the invitation management
**Type:** Positive
**Covers:** 4.3 → Audit logging of the invitation management
**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 invitation management.
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
