# 2. Content Access Restrictions — Test Cases

User Type: **Parent**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: content_access_restrictions.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 Content Access by Category | Allow or block content by category | TC-PT-5-02-001 |
| 2.1 Content Access by Category | Core learning content always available | TC-PT-5-02-002 |
| 2.1 Content Access by Category | Restricted category list | TC-PT-5-02-003 |
| 2.1 Content Access by Category | Restriction applied in real time | TC-PT-5-02-004 |
| 2.1 Content Access by Category | Restriction status shown to the child | TC-PT-5-02-005 |
| 2.1 Content Access by Category | Restrictions available on web and mobile | TC-PT-5-02-006 |
| 2.1 Content Access by Category | Restriction event logging (set, applied) | TC-PT-5-02-007 |
| 2.1 Content Access by Category | Audit logging of the content access by category | TC-PT-5-02-008 |
| 2.1 Content Access by Category | Rule: The restrictions are by content category. | TC-PT-5-02-001 |
| 2.1 Content Access by Category | Rule: The core learning content is always available. | TC-PT-5-02-002 |
| 2.1 Content Access by Category | Rule: The restriction is applied in real time. | TC-PT-5-02-003 |
| 2.1 Content Access by Category | Rule: Restriction events (set, applied) are logged with the account and the timestamp. | TC-PT-5-02-004 |
| 2.1 Content Access by Category | Rule: The content access by category is audit-logged with the account and the timestamp. | TC-PT-5-02-005 |
| 2.2 Age-Appropriate Content Filter | Enable the age-appropriate content filter | TC-PT-5-02-009 |
| 2.2 Age-Appropriate Content Filter | Filter aligned with the child's grade | TC-PT-5-02-010 |
| 2.2 Age-Appropriate Content Filter | Unsuitable content restricted | TC-PT-5-02-011 |
| 2.2 Age-Appropriate Content Filter | Filter status shown to the Parent | TC-PT-5-02-012 |
| 2.2 Age-Appropriate Content Filter | Filter override by the Parent (with reason) | TC-PT-5-02-013 |
| 2.2 Age-Appropriate Content Filter | Filter available on web and mobile | TC-PT-5-02-014 |
| 2.2 Age-Appropriate Content Filter | Filter event logging (enabled, overridden) | TC-PT-5-02-015 |
| 2.2 Age-Appropriate Content Filter | Audit logging of the age-appropriate content filter | TC-PT-5-02-016 |
| 2.2 Age-Appropriate Content Filter | Rule: The filter is aligned with the child's grade. | TC-PT-5-02-009 |
| 2.2 Age-Appropriate Content Filter | Rule: Unsuitable content is restricted. | TC-PT-5-02-010 |
| 2.2 Age-Appropriate Content Filter | Rule: An override requires a reason. | TC-PT-5-02-011 |
| 2.2 Age-Appropriate Content Filter | Rule: Filter events (enabled, overridden) are logged with the account and the timestamp. | TC-PT-5-02-012 |
| 2.2 Age-Appropriate Content Filter | Rule: The age-appropriate content filter is audit-logged with the account and the timestamp. | TC-PT-5-02-013 |
| 2.3 Restricted Content Requests | Child requests access to restricted content | TC-PT-5-02-017 |
| 2.3 Restricted Content Requests | Request with a reason | TC-PT-5-02-018 |
| 2.3 Restricted Content Requests | Parent approves or denies the request | TC-PT-5-02-019 |
| 2.3 Restricted Content Requests | Approved access for a defined period | TC-PT-5-02-020 |
| 2.3 Restricted Content Requests | Request history | TC-PT-5-02-021 |
| 2.3 Restricted Content Requests | Requests available on web and mobile | TC-PT-5-02-022 |
| 2.3 Restricted Content Requests | Request event logging (submitted, approved, denied) | TC-PT-5-02-023 |
| 2.3 Restricted Content Requests | Audit logging of the restricted content requests | TC-PT-5-02-024 |
| 2.3 Restricted Content Requests | Rule: The request includes a reason. | TC-PT-5-02-017 |
| 2.3 Restricted Content Requests | Rule: The Parent approves or denies the request. | TC-PT-5-02-018 |
| 2.3 Restricted Content Requests | Rule: Approved access is for a defined period. | TC-PT-5-02-019 |
| 2.3 Restricted Content Requests | Rule: Request events (submitted, approved, denied) are logged with the account and the timestamp. | TC-PT-5-02-020 |
| 2.3 Restricted Content Requests | Rule: The restricted content requests is audit-logged with the account and the timestamp. | TC-PT-5-02-021 |

## 2.1 Content Access by Category

### TC-PT-5-02-001 — Allow or block content by category
**Type:** Edge
**Covers:** 2.1 → Allow or block content by category; Rule: The restrictions are by content category.
**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: Allow or block content by category.
2. Observe the result and verify the full behavior: Allow or block content by category.
**Expected Result:** Allow or block content by category — delivered exactly as documented.
**Priority:** Critical

### TC-PT-5-02-002 — Core learning content always available
**Type:** Positive
**Covers:** 2.1 → Core learning content always available; Rule: The core learning content is always available.
**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: Core learning content always available.
2. Observe the result and verify the full behavior: Core learning content always available.
**Expected Result:** Core learning content always available — delivered exactly as documented.
**Priority:** High

### TC-PT-5-02-003 — Restricted category list
**Type:** Positive
**Covers:** 2.1 → Restricted category list; Rule: The restriction is applied in 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: Restricted category list.
2. Observe the result and verify the full behavior: Restricted category list.
**Expected Result:** Restricted category list — delivered exactly as documented.
**Priority:** High

### TC-PT-5-02-004 — Restriction applied in real time
**Type:** Positive
**Covers:** 2.1 → Restriction applied in real time; Rule: Restriction events (set, applied) 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: Restriction applied in real time.
2. Observe the result and verify the full behavior: Restriction applied in real time.
**Expected Result:** Restriction applied in real time — delivered exactly as documented.
**Priority:** High

### TC-PT-5-02-005 — Restriction status shown to the child
**Type:** Positive
**Covers:** 2.1 → Restriction status shown to the child; Rule: The content access by category 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: Restriction status shown to the child.
2. Observe the result and verify the full behavior: Restriction status shown to the child.
**Expected Result:** Restriction status shown to the child — delivered exactly as documented.
**Priority:** High

### TC-PT-5-02-006 — Restrictions available on web and mobile
**Type:** Positive
**Covers:** 2.1 → Restrictions 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: Restrictions available on web and mobile.
2. Observe the result and verify the full behavior: Restrictions available on web and mobile.
**Expected Result:** Restrictions available on web and mobile — delivered exactly as documented.
**Priority:** High

### TC-PT-5-02-007 — Restriction event logging (set, applied)
**Type:** Positive
**Covers:** 2.1 → Restriction event logging (set, 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: Restriction event logging (set.
2. Observe the result and verify the full behavior: Restriction event logging (set, applied).
**Expected Result:** Restriction event logging (set, applied) — delivered exactly as documented.
**Priority:** High

### TC-PT-5-02-008 — Audit logging of the content access by category
**Type:** Positive
**Covers:** 2.1 → Audit logging of the content access by category
**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 content access by category.
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

## 2.2 Age-Appropriate Content Filter

### TC-PT-5-02-009 — Enable the age-appropriate content filter
**Type:** Positive
**Covers:** 2.2 → Enable the age-appropriate content filter; Rule: The filter is aligned with the child's grade.
**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 the age-appropriate content filter.
2. Observe the result and verify the full behavior: Enable the age-appropriate content filter.
**Expected Result:** Enable the age-appropriate content filter — delivered exactly as documented.
**Priority:** Critical

### TC-PT-5-02-010 — Filter aligned with the child's grade
**Type:** Positive
**Covers:** 2.2 → Filter aligned with the child's grade; Rule: Unsuitable content is restricted.
**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: Filter aligned with the child's grade.
2. Observe the result and verify the full behavior: Filter aligned with the child's grade.
**Expected Result:** Filter aligned with the child's grade — delivered exactly as documented.
**Priority:** High

### TC-PT-5-02-011 — Unsuitable content restricted
**Type:** Positive
**Covers:** 2.2 → Unsuitable content restricted; Rule: An override requires a reason.
**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: Unsuitable content restricted.
2. Observe the result and verify the full behavior: Unsuitable content restricted.
**Expected Result:** Unsuitable content restricted — delivered exactly as documented.
**Priority:** High

### TC-PT-5-02-012 — Filter status shown to the Parent
**Type:** Positive
**Covers:** 2.2 → Filter status shown to the Parent; Rule: Filter events (enabled, overridden) 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: Filter status shown to the Parent.
2. Observe the result and verify the full behavior: Filter status shown to the Parent.
**Expected Result:** Filter status shown to the Parent — delivered exactly as documented.
**Priority:** High

### TC-PT-5-02-013 — Filter override by the Parent (with reason)
**Type:** Positive
**Covers:** 2.2 → Filter override by the Parent (with reason); Rule: The age-appropriate content filter 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: Filter override by the Parent (with reason).
2. Observe the result and verify the full behavior: Filter override by the Parent (with reason).
**Expected Result:** Filter override by the Parent (with reason) — delivered exactly as documented.
**Priority:** High

### TC-PT-5-02-014 — Filter available on web and mobile
**Type:** Positive
**Covers:** 2.2 → Filter 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: Filter available on web and mobile.
2. Observe the result and verify the full behavior: Filter available on web and mobile.
**Expected Result:** Filter available on web and mobile — delivered exactly as documented.
**Priority:** High

### TC-PT-5-02-015 — Filter event logging (enabled, overridden)
**Type:** Positive
**Covers:** 2.2 → Filter event logging (enabled, overridden)
**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: Filter event logging (enabled.
2. Observe the result and verify the full behavior: Filter event logging (enabled, overridden).
**Expected Result:** Filter event logging (enabled, overridden) — delivered exactly as documented.
**Priority:** High

### TC-PT-5-02-016 — Audit logging of the age-appropriate content filter
**Type:** Positive
**Covers:** 2.2 → Audit logging of the age-appropriate content filter
**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 age-appropriate content filter.
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

## 2.3 Restricted Content Requests

### TC-PT-5-02-017 — Child requests access to restricted content
**Type:** Positive
**Covers:** 2.3 → Child requests access to restricted content; Rule: The request includes a reason.
**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 requests access to restricted content.
2. Observe the result and verify the full behavior: Child requests access to restricted content.
**Expected Result:** Child requests access to restricted content — delivered exactly as documented.
**Priority:** Critical

### TC-PT-5-02-018 — Request with a reason
**Type:** Positive
**Covers:** 2.3 → Request with a reason; 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: Request with a reason.
2. Observe the result and verify the full behavior: Request with a reason.
**Expected Result:** Request with a reason — delivered exactly as documented.
**Priority:** High

### TC-PT-5-02-019 — Parent approves or denies the request
**Type:** Positive
**Covers:** 2.3 → Parent approves or denies the request; Rule: Approved access is for a defined period.
**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-5-02-020 — Approved access for a defined period
**Type:** Positive
**Covers:** 2.3 → Approved access for a defined period; Rule: Request events (submitted, 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 access for a defined period.
2. Observe the result and verify the full behavior: Approved access for a defined period.
**Expected Result:** Approved access for a defined period — delivered exactly as documented.
**Priority:** High

### TC-PT-5-02-021 — Request history
**Type:** Positive
**Covers:** 2.3 → Request history; Rule: The restricted content 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: 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-5-02-022 — Requests available on web and mobile
**Type:** Positive
**Covers:** 2.3 → Requests 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: Requests available on web and mobile.
2. Observe the result and verify the full behavior: Requests available on web and mobile.
**Expected Result:** Requests available on web and mobile — delivered exactly as documented.
**Priority:** High

### TC-PT-5-02-023 — Request event logging (submitted, approved, denied)
**Type:** Positive
**Covers:** 2.3 → Request event logging (submitted, 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: Request event logging (submitted.
2. Observe the result and verify the full behavior: Request event logging (submitted, approved, denied).
**Expected Result:** Request event logging (submitted, approved, denied) — delivered exactly as documented.
**Priority:** High

### TC-PT-5-02-024 — Audit logging of the restricted content requests
**Type:** Positive
**Covers:** 2.3 → Audit logging of the restricted content 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 restricted content 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
