# 5. Content Settings — Test Cases

User Type: **Super Administrator**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: content_settings.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 |
|---------|--------------------|----------|
| 5.1 Configure Video Quality Options | Quality level set: the available playback qualities (adaptive ladder) | TC-SA-04-05-001 |
| 5.1 Configure Video Quality Options | Default quality (the starting level before the user or adaptive logic adjusts) | TC-SA-04-05-002 |
| 5.1 Configure Video Quality Options | Maximum quality cap (where a top level is restricted) | TC-SA-04-05-003 |
| 5.1 Configure Video Quality Options | Adaptive behavior: automatic adjustment to connection, with user override within the configured set | TC-SA-04-05-004 |
| 5.1 Configure Video Quality Options | Consistent application across all video content | TC-SA-04-05-005 |
| 5.1 Configure Video Quality Options | Data-usage awareness: lower levels available for constrained connections | TC-SA-04-05-006 |
| 5.1 Configure Video Quality Options | Audit logging of video quality configuration changes | TC-SA-04-05-007 |
| 5.1 Configure Video Quality Options | Rule: the quality set is platform-wide; individual content does not define its own ladder | TC-SA-04-05-005 |
| 5.1 Configure Video Quality Options | Rule: the default is a starting point; adaptive logic and user override adjust within the configured set | TC-SA-04-05-004 |
| 5.1 Configure Video Quality Options | Rule: a maximum cap restricts the top level; content encoded above the cap is down-scaled for display | TC-SA-04-05-003 |
| 5.1 Configure Video Quality Options | Rule: adaptive adjustment is automatic but user-overridable within the set; a user cannot select a level outside the configured set | TC-SA-04-05-008 |
| 5.1 Configure Video Quality Options | Rule: the settings apply consistently across all video content | TC-SA-04-05-005 |
| 5.1 Configure Video Quality Options | Rule: video quality configuration changes are audit-logged with the acting admin and timestamp | TC-SA-04-05-007 |
| 5.2 Configure Subtitle and Language Options | Subtitle language set: the subtitle languages offered per content (from the available tracks) | TC-SA-04-05-009 |
| 5.2 Configure Subtitle and Language Options | Default subtitle behavior: on/off by default and the default subtitle language | TC-SA-04-05-010 |
| 5.2 Configure Subtitle and Language Options | Audio-language options: the audio tracks offered where content is multi-lingual | TC-SA-04-05-011 |
| 5.2 Configure Subtitle and Language Options | Per-user preference: a user's subtitle/language choice remembered across content | TC-SA-04-05-012 |
| 5.2 Configure Subtitle and Language Options | Consistent player controls for subtitle and language selection | TC-SA-04-05-013 |
| 5.2 Configure Subtitle and Language Options | Fallback: behavior when a preferred subtitle/language is unavailable for a piece of content | TC-SA-04-05-014 |
| 5.2 Configure Subtitle and Language Options | Audit logging of subtitle/language configuration changes | TC-SA-04-05-015 |
| 5.2 Configure Subtitle and Language Options | Rule: the offered subtitle/language options are the intersection of the configuration and the content's actual tracks; an unavailable track is not offered | TC-SA-04-05-014 |
| 5.2 Configure Subtitle and Language Options | Rule: the default subtitle behavior applies when the user has no preference; a user's choice overrides the default and is remembered | TC-SA-04-05-012 |
| 5.2 Configure Subtitle and Language Options | Rule: a missing preferred track falls back gracefully (default or none); it is never a broken or empty option | TC-SA-04-05-014 |
| 5.2 Configure Subtitle and Language Options | Rule: the configuration is platform-wide; content-specific tracks are the input, the configuration is the policy | TC-SA-04-05-009 |
| 5.2 Configure Subtitle and Language Options | Rule: player controls are consistent across content for subtitle and language selection | TC-SA-04-05-013 |
| 5.2 Configure Subtitle and Language Options | Rule: subtitle/language configuration changes are audit-logged with the acting admin and timestamp | TC-SA-04-05-015 |
| 5.3 Configure Downloadable Content Permissions | Download permission policy: which content is downloadable (by type, tier, or entitlement) | TC-SA-04-05-016 |
| 5.3 Configure Downloadable Content Permissions | Download limits: per-user count caps and offline-retention period where applicable | TC-SA-04-05-017 |
| 5.3 Configure Downloadable Content Permissions | Condition checks: subscription/entitlement state required for a download | TC-SA-04-05-018 |
| 5.3 Configure Downloadable Content Permissions | Download management by the user: their downloaded items, storage, and removal | TC-SA-04-05-019 |
| 5.3 Configure Downloadable Content Permissions | Offline access behavior: downloaded content is usable offline within the retention/entitlement window | TC-SA-04-05-020 |
| 5.3 Configure Downloadable Content Permissions | Revocation: a download is no longer accessible when the entitlement lapses (per policy) | TC-SA-04-05-021 |
| 5.3 Configure Downloadable Content Permissions | Audit logging of download permission configuration changes | TC-SA-04-05-022 |
| 5.3 Configure Downloadable Content Permissions | Rule: downloadability is policy-driven: content is downloadable only where the policy (type/tier/entitlement) allows it | TC-SA-04-05-016 |
| 5.3 Configure Downloadable Content Permissions | Rule: the per-user cap and the retention/entitlement window are enforced; a lapsed entitlement ends offline access per policy | TC-SA-04-05-021 |
| 5.3 Configure Downloadable Content Permissions | Rule: the condition (e.g., active subscription) is checked at download time and on offline open; it is not a one-time grant | TC-SA-04-05-018 |
| 5.3 Configure Downloadable Content Permissions | Rule: users manage their downloads (view, remove); removal frees cap space | TC-SA-04-05-019 |
| 5.3 Configure Downloadable Content Permissions | Rule: non-eligible users see no download option (absence, not a blocked action), keeping the surface clean | TC-SA-04-05-023 |
| 5.3 Configure Downloadable Content Permissions | Rule: download permission configuration changes are audit-logged with the acting admin and timestamp | TC-SA-04-05-022 |

## 5.1 Configure Video Quality Options

### TC-SA-04-05-001 — The quality level set defines the available playback qualities (adaptive ladder)
**Type:** Positive
**Covers:** 5.1 → Quality level set: the available playback qualities (adaptive ladder)
**Preconditions:** The quality ladder is configured: low, medium, high.
**Steps:**
1. Open Content Settings → Video Quality.
2. Verify the quality ladder shows low, medium, and high.
**Expected Result:** The quality level set shows the configured adaptive ladder (low, medium, high).
**Priority:** High

### TC-SA-04-05-002 — The default quality is the starting level before the user or adaptive logic adjusts
**Type:** Positive
**Covers:** 5.1 → Default quality (the starting level before the user or adaptive logic adjusts)
**Preconditions:** The default quality is set to medium.
**Steps:**
1. Start a video with no user override.
2. Verify playback starts at the medium (default) level.
**Expected Result:** Playback starts at the default (medium) level before any adjustment.
**Priority:** High

### TC-SA-04-05-003 — The maximum quality cap restricts the top level; content encoded above the cap is down-scaled
**Type:** Positive
**Covers:** 5.1 → Maximum quality cap (where a top level is restricted); Rule: a maximum cap restricts the top level; content encoded above the cap is down-scaled for display
**Preconditions:** The maximum cap is set to high; a piece of content is encoded at a level above high.
**Steps:**
1. Play the content encoded above the cap.
2. Verify the top level offered is the cap (high).
3. Verify the above-cap content is down-scaled for display.
**Expected Result:** The top level offered is the cap (high); the above-cap content is down-scaled — the cap is enforced.
**Priority:** High

### TC-SA-04-05-004 — Adaptive behavior: automatic adjustment to connection, with user override within the configured set
**Type:** Positive
**Covers:** 5.1 → Adaptive behavior: automatic adjustment to connection, with user override within the configured set; Rule: the default is a starting point; adaptive logic and user override adjust within the configured set
**Preconditions:** A user is on a good connection; the quality set is low/medium/high.
**Steps:**
1. Start a video and verify adaptive logic selects a high level (within the cap).
2. Have the user override to medium and verify the override is respected.
3. Degrade the connection and verify adaptive logic adjusts down automatically.
**Expected Result:** Adaptive logic adjusts to the connection automatically; the user can override within the configured set — both work.
**Priority:** Critical

### TC-SA-04-05-005 — The quality set applies consistently across all video content; individual content does not define its own ladder
**Type:** Positive
**Covers:** 5.1 → Consistent application across all video content; Rule: the quality set is platform-wide; individual content does not define its own ladder; Rule: the settings apply consistently across all video content
**Preconditions:** The quality set is low/medium/high; multiple video pieces exist.
**Steps:**
1. Play three different video pieces.
2. Verify each offers the same quality ladder (low/medium/high).
**Expected Result:** All video pieces offer the same platform-wide quality ladder — no content defines its own ladder.
**Priority:** High

### TC-SA-04-05-006 — Data-usage awareness: lower levels are available for constrained connections
**Type:** Positive
**Covers:** 5.1 → Data-usage awareness: lower levels available for constrained connections
**Preconditions:** A user is on a constrained connection.
**Steps:**
1. Start a video on the constrained connection.
2. Verify the lower levels are reachable and the playback adapts down.
**Expected Result:** The lower levels are reachable for the constrained connection — buffering and data cost are reduced.
**Priority:** Medium

### TC-SA-04-05-007 — Video quality configuration changes are audit-logged with the levels, default, cap, and timestamp
**Type:** Positive
**Covers:** 5.1 → Audit logging of video quality configuration changes; Rule: video quality configuration changes are audit-logged with the acting admin and timestamp
**Preconditions:** The quality levels, default, and cap are changed.
**Steps:**
1. Open the audit trail and filter by "video quality".
2. Verify the entry shows the levels, default, cap, the acting admin, and the timestamp.
**Expected Result:** The video quality configuration change is audit-logged with the levels, default, cap, acting admin, and timestamp.
**Priority:** Critical

### TC-SA-04-05-008 — A user cannot select a quality level outside the configured set
**Type:** Negative
**Covers:** 5.1 → Rule: adaptive adjustment is automatic but user-overridable within the set; a user cannot select a level outside the configured set
**Preconditions:** The configured set is low/medium/high; "ultra-high" is not in the set.
**Steps:**
1. As a user, open the quality selector.
2. Verify "ultra-high" is not offered.
**Expected Result:** The quality selector offers only the configured set (low/medium/high) — a user cannot select a level outside it.
**Priority:** High

## 5.2 Configure Subtitle and Language Options

### TC-SA-04-05-009 — The subtitle language set is the intersection of the configuration and the content's actual tracks
**Type:** Positive
**Covers:** 5.2 → Subtitle language set: the subtitle languages offered per content (from the available tracks); Rule: the configuration is platform-wide; content-specific tracks are the input, the configuration is the policy
**Preconditions:** A piece of content has English and Hindi subtitle tracks; the configuration offers both.
**Steps:**
1. Play the content.
2. Verify the subtitle options offered are English and Hindi (the intersection of configuration and tracks).
**Expected Result:** The subtitle options are the intersection of the configuration and the content's actual tracks — English and Hindi are offered.
**Priority:** High

### TC-SA-04-05-010 — The default subtitle behavior: on/off by default and the default subtitle language
**Type:** Positive
**Covers:** 5.2 → Default subtitle behavior: on/off by default and the default subtitle language
**Preconditions:** The default is subtitles on in the user's interface language where a track exists.
**Steps:**
1. As a user with no preference, play content with an English track.
2. Verify subtitles are on by default in the user's interface language (where a track exists).
**Expected Result:** Subtitles are on by default in the user's interface language where a track exists — the default behavior applies.
**Priority:** High

### TC-SA-04-05-011 — Audio-language options: the audio tracks offered where content is multi-lingual
**Type:** Positive
**Covers:** 5.2 → Audio-language options: the audio tracks offered where content is multi-lingual
**Preconditions:** A piece of content has English and Spanish audio tracks.
**Steps:**
1. Play the multi-lingual content.
2. Verify the audio-language options offer English and Spanish.
**Expected Result:** The audio-language options offer the available tracks (English, Spanish) for the multi-lingual content.
**Priority:** Medium

### TC-SA-04-05-012 — Per-user preference: a user's subtitle/language choice is remembered across content; it overrides the default
**Type:** Positive
**Covers:** 5.2 → Per-user preference: a user's subtitle/language choice remembered across content; Rule: the default subtitle behavior applies when the user has no preference; a user's choice overrides the default and is remembered
**Preconditions:** A user sets their subtitle preference to Hindi.
**Steps:**
1. As the user, set the subtitle preference to Hindi.
2. Play a second piece of content with a Hindi track.
3. Verify the subtitle is Hindi by default (the remembered choice).
**Expected Result:** The user's Hindi preference is remembered and applied to the next content — the choice overrides the default.
**Priority:** High

### TC-SA-04-05-013 — Player controls are consistent across content for subtitle and language selection
**Type:** Positive
**Covers:** 5.2 → Consistent player controls for subtitle and language selection; Rule: player controls are consistent across content for subtitle and language selection
**Preconditions:** Multiple pieces of content exist.
**Steps:**
1. Open the subtitle/language controls on three different pieces of content.
2. Verify the controls are consistent (same layout, same behavior).
**Expected Result:** The player controls for subtitle and language selection are consistent across all content.
**Priority:** Medium

### TC-SA-04-05-014 — Fallback: a missing preferred track falls back gracefully (default or none); an unavailable track is not offered
**Type:** Negative
**Covers:** 5.2 → Fallback: behavior when a preferred subtitle/language is unavailable for a piece of content; Rule: the offered subtitle/language options are the intersection of the configuration and the content's actual tracks; an unavailable track is not offered; Rule: a missing preferred track falls back gracefully (default or none); it is never a broken or empty option
**Preconditions:** A user prefers Hindi subtitles; a piece of content has only an English track.
**Steps:**
1. As the user, play the content with only an English track.
2. Verify Hindi is not offered (unavailable track).
3. Verify the fallback applies (the default English subtitle or none) — no broken option.
**Expected Result:** Hindi is not offered (not in the content's tracks); the fallback applies gracefully (default or none) — no broken or empty option.
**Priority:** Critical

### TC-SA-04-05-015 — Subtitle/language configuration changes are audit-logged with the sets and defaults
**Type:** Positive
**Covers:** 5.2 → Audit logging of subtitle/language configuration changes; Rule: subtitle/language configuration changes are audit-logged with the acting admin and timestamp
**Preconditions:** The subtitle set and default behavior are changed.
**Steps:**
1. Open the audit trail and filter by "subtitle".
2. Verify the entry shows the sets, defaults, the acting admin, and the timestamp.
**Expected Result:** The subtitle/language configuration change is audit-logged with the sets, defaults, acting admin, and timestamp.
**Priority:** Critical

## 5.3 Configure Downloadable Content Permissions

### TC-SA-04-05-016 — The download permission policy defines which content is downloadable (by type, tier, or entitlement)
**Type:** Positive
**Covers:** 5.3 → Download permission policy: which content is downloadable (by type, tier, or entitlement); Rule: downloadability is policy-driven: content is downloadable only where the policy (type/tier/entitlement) allows it
**Preconditions:** The policy: subscribed users can download video lessons.
**Steps:**
1. Configure the policy: video lessons downloadable for subscribed users.
2. As a subscribed user, verify the download option appears on video lessons.
3. Verify non-video content has no download option.
**Expected Result:** The download option appears only on policy-eligible content (video lessons for subscribed users) — downloadability is policy-driven.
**Priority:** Critical

### TC-SA-04-05-017 — Download limits: per-user count caps and offline-retention period are enforced
**Type:** Positive
**Covers:** 5.3 → Download limits: per-user count caps and offline-retention period where applicable
**Preconditions:** The per-user cap is 50 items; the retention is while the subscription is active.
**Steps:**
1. As a subscribed user, download 50 items.
2. Attempt a 51st download and verify the cap is enforced.
**Expected Result:** The 51st download is blocked by the per-user cap (50) — the limit is enforced.
**Priority:** High

### TC-SA-04-05-018 — Condition checks: the subscription/entitlement state is checked at download time and on offline open (not a one-time grant)
**Type:** Positive
**Covers:** 5.3 → Condition checks: subscription/entitlement state required for a download; Rule: the condition (e.g., active subscription) is checked at download time and on offline open; it is not a one-time grant
**Preconditions:** A subscribed user downloads a lesson; the subscription later lapses.
**Steps:**
1. As the subscribed user, download a lesson (condition met).
2. Let the subscription lapse.
3. Attempt to open the downloaded lesson offline and verify the entitlement check fails.
**Expected Result:** The condition is checked at download time and on offline open — after the subscription lapses, the offline open fails the entitlement check (not a one-time grant).
**Priority:** Critical

### TC-SA-04-05-019 — Users manage their downloads (view, remove); removal frees cap space
**Type:** Positive
**Covers:** 5.3 → Download management by the user: their downloaded items, storage, and removal; Rule: users manage their downloads (view, remove); removal frees cap space
**Preconditions:** A user has 50 downloaded items (at the cap).
**Steps:**
1. As the user, view the download list (50 items).
2. Remove 5 items.
3. Attempt to download 5 new items and verify the cap space is freed.
**Expected Result:** The user can view and remove downloads; removing 5 items frees cap space, allowing 5 new downloads.
**Priority:** High

### TC-SA-04-05-020 — Offline access behavior: downloaded content is usable offline within the retention/entitlement window
**Type:** Positive
**Covers:** 5.3 → Offline access behavior: downloaded content is usable offline within the retention/entitlement window
**Preconditions:** A subscribed user has downloaded lessons; the subscription is active.
**Steps:**
1. As the user, go offline.
2. Open a downloaded lesson and verify it plays offline.
**Expected Result:** The downloaded lesson is usable offline while the subscription is active — offline access works within the entitlement window.
**Priority:** High

### TC-SA-04-05-021 — Revocation: a download is no longer accessible when the entitlement lapses (per policy)
**Type:** Negative
**Covers:** 5.3 → Revocation: a download is no longer accessible when the entitlement lapses (per policy); Rule: the per-user cap and the retention/entitlement window are enforced; a lapsed entitlement ends offline access per policy
**Preconditions:** A user has downloaded lessons; the subscription lapses.
**Steps:**
1. Let the subscription lapse.
2. Attempt to open a downloaded lesson offline.
3. Verify the item is no longer accessible and the user is prompted to renew.
**Expected Result:** After the subscription lapses, the downloaded item is no longer accessible offline; the user is prompted to renew — revocation is enforced per policy.
**Priority:** Critical

### TC-SA-04-05-022 — Download permission configuration changes are audit-logged with the policy elements and timestamp
**Type:** Positive
**Covers:** 5.3 → Audit logging of download permission configuration changes; Rule: download permission configuration changes are audit-logged with the acting admin and timestamp
**Preconditions:** The download scope, cap, condition, and retention are changed.
**Steps:**
1. Open the audit trail and filter by "download".
2. Verify the entry shows the policy elements (scope, cap, condition, retention), the acting admin, and the timestamp.
**Expected Result:** The download permission configuration change is audit-logged with the policy elements, acting admin, and timestamp.
**Priority:** Critical

### TC-SA-04-05-023 — Non-eligible users see no download option (absence, not a blocked action)
**Type:** Negative
**Covers:** 5.3 → Rule: non-eligible users see no download option (absence, not a blocked action), keeping the surface clean
**Preconditions:** A freemium user views gated (subscription-only) content.
**Steps:**
1. As the freemium user, open the gated content.
2. Verify the download option is absent (not a blocked click).
**Expected Result:** The freemium user sees no download option on the gated content — the option is absent, not a blocked action.
**Priority:** High
