# 3. Parental Approval for Purchases — Test Cases

User Type: **Parent**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: parental_approval_purchases.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 Approve a Child's Purchase Request | Child submits a purchase request | TC-PT-8-03-001 |
| 3.1 Approve a Child's Purchase Request | Parent reviews the request | TC-PT-8-03-002 |
| 3.1 Approve a Child's Purchase Request | Parent approves or denies the request | TC-PT-8-03-003 |
| 3.1 Approve a Child's Purchase Request | Approved purchase completed | TC-PT-8-03-004 |
| 3.1 Approve a Child's Purchase Request | Denial reason to the child | TC-PT-8-03-005 |
| 3.1 Approve a Child's Purchase Request | Request history | TC-PT-8-03-006 |
| 3.1 Approve a Child's Purchase Request | Approval available on web and mobile | TC-PT-8-03-007 |
| 3.1 Approve a Child's Purchase Request | Approval event logging (requested, approved, denied) | TC-PT-8-03-008 |
| 3.1 Approve a Child's Purchase Request | Audit logging of the approve a child's purchase request | TC-PT-8-03-009 |
| 3.1 Approve a Child's Purchase Request | Rule: The request is submitted by the child. | TC-PT-8-03-001 |
| 3.1 Approve a Child's Purchase Request | Rule: The Parent approves or denies the request. | TC-PT-8-03-002 |
| 3.1 Approve a Child's Purchase Request | Rule: An approved purchase is completed. | TC-PT-8-03-003 |
| 3.1 Approve a Child's Purchase Request | Rule: Approval events (requested, approved, denied) are logged with the account and the timestamp. | TC-PT-8-03-004 |
| 3.1 Approve a Child's Purchase Request | Rule: The approve a child's purchase request is audit-logged with the account and the timestamp. | TC-PT-8-03-005 |
| 3.2 Spending Limits for the Child | Set a monthly spending limit for the child | TC-PT-8-03-010 |
| 3.2 Spending Limits for the Child | Purchases within the limit auto-approved | TC-PT-8-03-011 |
| 3.2 Spending Limits for the Child | Purchases above the limit require approval | TC-PT-8-03-012 |
| 3.2 Spending Limits for the Child | Spending limit status | TC-PT-8-03-013 |
| 3.2 Spending Limits for the Child | Limit change confirmation | TC-PT-8-03-014 |
| 3.2 Spending Limits for the Child | Limits available on web and mobile | TC-PT-8-03-015 |
| 3.2 Spending Limits for the Child | Limit event logging (set, changed) | TC-PT-8-03-016 |
| 3.2 Spending Limits for the Child | Audit logging of the spending limits for the child | TC-PT-8-03-017 |
| 3.2 Spending Limits for the Child | Rule: The limit is a monthly maximum. | TC-PT-8-03-010 |
| 3.2 Spending Limits for the Child | Rule: Purchases within the limit are auto-approved. | TC-PT-8-03-011 |
| 3.2 Spending Limits for the Child | Rule: Purchases above the limit require approval. | TC-PT-8-03-012 |
| 3.2 Spending Limits for the Child | Rule: Limit events (set, changed) are logged with the account and the timestamp. | TC-PT-8-03-013 |
| 3.2 Spending Limits for the Child | Rule: The spending limits for the child is audit-logged with the account and the timestamp. | TC-PT-8-03-014 |
| 3.3 Purchase Approval Notifications | Notification on a child purchase request | TC-PT-8-03-018 |
| 3.3 Purchase Approval Notifications | In-app, email, and push channels | TC-PT-8-03-019 |
| 3.3 Purchase Approval Notifications | Notification links to the request | TC-PT-8-03-020 |
| 3.3 Purchase Approval Notifications | Pending request count | TC-PT-8-03-021 |
| 3.3 Purchase Approval Notifications | Notification preferences for purchase requests | TC-PT-8-03-022 |
| 3.3 Purchase Approval Notifications | Notification event logging (sent, opened) | TC-PT-8-03-023 |
| 3.3 Purchase Approval Notifications | Audit logging of the purchase approval notifications | TC-PT-8-03-024 |
| 3.3 Purchase Approval Notifications | Rule: Notifications are sent on child purchase requests. | TC-PT-8-03-018 |
| 3.3 Purchase Approval Notifications | Rule: The notification channels are in-app, email, and push. | TC-PT-8-03-019 |
| 3.3 Purchase Approval Notifications | Rule: A notification links to the request. | TC-PT-8-03-020 |
| 3.3 Purchase Approval Notifications | Rule: Notification events (sent, opened) are logged with the account and the timestamp. | TC-PT-8-03-021 |
| 3.3 Purchase Approval Notifications | Rule: The purchase approval notifications is audit-logged with the account and the timestamp. | TC-PT-8-03-022 |

## 3.1 Approve a Child's Purchase Request

### TC-PT-8-03-001 — Child submits a purchase request
**Type:** Positive
**Covers:** 3.1 → Child submits a purchase request; Rule: The request is submitted by the child.
**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 submits a purchase request.
2. Observe the result and verify the full behavior: Child submits a purchase request.
**Expected Result:** Child submits a purchase request — delivered exactly as documented.
**Priority:** Critical

### TC-PT-8-03-002 — Parent reviews the request
**Type:** Positive
**Covers:** 3.1 → Parent reviews the request; Rule: The Parent approves or denies the request.
**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: Parent reviews the request.
2. Observe the result and verify the full behavior: Parent reviews the request.
**Expected Result:** Parent reviews the request — delivered exactly as documented.
**Priority:** High

### TC-PT-8-03-003 — Parent approves or denies the request
**Type:** Positive
**Covers:** 3.1 → Parent approves or denies the request; Rule: An approved purchase is completed.
**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: Parent approves or denies the request.
2. Observe the result and verify the full behavior: Parent approves or denies the request.
**Expected Result:** Parent approves or denies the request — delivered exactly as documented.
**Priority:** High

### TC-PT-8-03-004 — Approved purchase completed
**Type:** Positive
**Covers:** 3.1 → Approved purchase completed; Rule: Approval events (requested, approved, denied) 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: Approved purchase completed.
2. Observe the result and verify the full behavior: Approved purchase completed.
**Expected Result:** Approved purchase completed — delivered exactly as documented.
**Priority:** High

### TC-PT-8-03-005 — Denial reason to the child
**Type:** Positive
**Covers:** 3.1 → Denial reason to the child; Rule: The approve a child's purchase request 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: Denial reason to the child.
2. Observe the result and verify the full behavior: Denial reason to the child.
**Expected Result:** Denial reason to the child — delivered exactly as documented.
**Priority:** High

### TC-PT-8-03-006 — Request history
**Type:** Positive
**Covers:** 3.1 → Request history
**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 history.
2. Observe the result and verify the full behavior: Request history.
**Expected Result:** Request history — delivered exactly as documented.
**Priority:** High

### TC-PT-8-03-007 — Approval available on web and mobile
**Type:** Positive
**Covers:** 3.1 → Approval 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: Approval available on web and mobile.
2. Observe the result and verify the full behavior: Approval available on web and mobile.
**Expected Result:** Approval available on web and mobile — delivered exactly as documented.
**Priority:** High

### TC-PT-8-03-008 — Approval event logging (requested, approved, denied)
**Type:** Positive
**Covers:** 3.1 → Approval event logging (requested, approved, denied)
**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: Approval event logging (requested.
2. Observe the result and verify the full behavior: Approval event logging (requested, approved, denied).
**Expected Result:** Approval event logging (requested, approved, denied) — delivered exactly as documented.
**Priority:** High

### TC-PT-8-03-009 — Audit logging of the approve a child's purchase request
**Type:** Positive
**Covers:** 3.1 → Audit logging of the approve a child's purchase request
**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 approve a child's purchase request.
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 Spending Limits for the Child

### TC-PT-8-03-010 — Set a monthly spending limit for the child
**Type:** Edge
**Covers:** 3.2 → Set a monthly spending limit for the child; Rule: The limit is a monthly maximum.
**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: Set a monthly spending limit for the child.
2. Observe the result and verify the full behavior: Set a monthly spending limit for the child.
**Expected Result:** Set a monthly spending limit for the child — delivered exactly as documented.
**Priority:** Critical

### TC-PT-8-03-011 — Purchases within the limit auto-approved
**Type:** Edge
**Covers:** 3.2 → Purchases within the limit auto-approved; Rule: Purchases within the limit are auto-approved.
**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: Purchases within the limit auto-approved.
2. Observe the result and verify the full behavior: Purchases within the limit auto-approved.
**Expected Result:** Purchases within the limit auto-approved — delivered exactly as documented.
**Priority:** High

### TC-PT-8-03-012 — Purchases above the limit require approval
**Type:** Edge
**Covers:** 3.2 → Purchases above the limit require approval; Rule: Purchases above the limit require approval.
**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: Purchases above the limit require approval.
2. Observe the result and verify the full behavior: Purchases above the limit require approval.
**Expected Result:** Purchases above the limit require approval — delivered exactly as documented.
**Priority:** High

### TC-PT-8-03-013 — Spending limit status
**Type:** Edge
**Covers:** 3.2 → Spending limit status; Rule: Limit 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: Spending limit status.
2. Observe the result and verify the full behavior: Spending limit status.
**Expected Result:** Spending limit status — delivered exactly as documented.
**Priority:** High

### TC-PT-8-03-014 — Limit change confirmation
**Type:** Edge
**Covers:** 3.2 → Limit change confirmation; Rule: The spending limits for the child 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: Limit change confirmation.
2. Observe the result and verify the full behavior: Limit change confirmation.
**Expected Result:** Limit change confirmation — delivered exactly as documented.
**Priority:** High

### TC-PT-8-03-015 — Limits available on web and mobile
**Type:** Edge
**Covers:** 3.2 → Limits 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: Limits available on web and mobile.
2. Observe the result and verify the full behavior: Limits available on web and mobile.
**Expected Result:** Limits available on web and mobile — delivered exactly as documented.
**Priority:** High

### TC-PT-8-03-016 — Limit event logging (set, changed)
**Type:** Edge
**Covers:** 3.2 → Limit 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: Limit event logging (set.
2. Observe the result and verify the full behavior: Limit event logging (set, changed).
**Expected Result:** Limit event logging (set, changed) — delivered exactly as documented.
**Priority:** High

### TC-PT-8-03-017 — Audit logging of the spending limits for the child
**Type:** Edge
**Covers:** 3.2 → Audit logging of the spending limits for the child
**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 spending limits for the child.
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 Purchase Approval Notifications

### TC-PT-8-03-018 — Notification on a child purchase request
**Type:** Positive
**Covers:** 3.3 → Notification on a child purchase request; Rule: Notifications are sent on child purchase 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: Notification on a child purchase request.
2. Observe the result and verify the full behavior: Notification on a child purchase request.
**Expected Result:** Notification on a child purchase request — delivered exactly as documented.
**Priority:** Critical

### TC-PT-8-03-019 — In-app, email, and push channels
**Type:** Positive
**Covers:** 3.3 → In-app, email, and push channels; Rule: The notification channels are in-app, email, and push.
**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.
2. Observe the result and verify the full behavior: In-app, email, and push channels.
**Expected Result:** In-app, email, and push channels — delivered exactly as documented.
**Priority:** High

### TC-PT-8-03-020 — Notification links to the request
**Type:** Positive
**Covers:** 3.3 → Notification links to the request; Rule: A notification links to the request.
**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 links to the request.
2. Observe the result and verify the full behavior: Notification links to the request.
**Expected Result:** Notification links to the request — delivered exactly as documented.
**Priority:** High

### TC-PT-8-03-021 — Pending request count
**Type:** Positive
**Covers:** 3.3 → Pending request count; 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: Pending request count.
2. Observe the result and verify the full behavior: Pending request count.
**Expected Result:** Pending request count — delivered exactly as documented.
**Priority:** High

### TC-PT-8-03-022 — Notification preferences for purchase requests
**Type:** Positive
**Covers:** 3.3 → Notification preferences for purchase requests; Rule: The purchase approval 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: Notification preferences for purchase requests.
2. Observe the result and verify the full behavior: Notification preferences for purchase requests.
**Expected Result:** Notification preferences for purchase requests — delivered exactly as documented.
**Priority:** High

### TC-PT-8-03-023 — Notification event logging (sent, opened)
**Type:** Positive
**Covers:** 3.3 → 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-8-03-024 — Audit logging of the purchase approval notifications
**Type:** Positive
**Covers:** 3.3 → Audit logging of the purchase approval 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 purchase approval 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
