# 1. Video Tutorial Management — Test Cases

User Type: **Super Administrator**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: video_tutorial_management.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 |
|---------|--------------------|----------|
| 1.1 Upload Video Tutorials (HD Quality) | Video upload: the video file uploaded to the platform | TC-SA-07-01-001 |
| 1.1 Upload Video Tutorials (HD Quality) | HD quality: the video is in high-definition quality | TC-SA-07-01-002 |
| 1.1 Upload Video Tutorials (HD Quality) | Upload validation: format, quality, and size checked on upload | TC-SA-07-01-003 |
| 1.1 Upload Video Tutorials (HD Quality) | Processing: the video processed for streaming (available to play once processed) | TC-SA-07-01-004 |
| 1.1 Upload Video Tutorials (HD Quality) | Upload status: the upload's state (uploading, processing, ready, failed) | TC-SA-07-01-005 |
| 1.1 Upload Video Tutorials (HD Quality) | Upload failure handling: a failed upload reported with the reason | TC-SA-07-01-006 |
| 1.1 Upload Video Tutorials (HD Quality) | Video list: the uploaded videos with their status and metadata | TC-SA-07-01-007 |
| 1.1 Upload Video Tutorials (HD Quality) | Audit logging of video uploads | TC-SA-07-01-008 |
| 1.1 Upload Video Tutorials (HD Quality) | Rule: the upload is validated (format, quality, size); a failing file is rejected with the specific reason, not silently accepted | TC-SA-07-01-003 |
| 1.1 Upload Video Tutorials (HD Quality) | Rule: HD quality is the standard; a sub-standard upload is flagged | TC-SA-07-01-009 |
| 1.1 Upload Video Tutorials (HD Quality) | Rule: the video is processed for streaming; it is playable only once processing completes | TC-SA-07-01-010 |
| 1.1 Upload Video Tutorials (HD Quality) | Rule: a failed upload is reported with the reason; the corrected file is re-uploaded, and the failure is recorded | TC-SA-07-01-006 |
| 1.1 Upload Video Tutorials (HD Quality) | Rule: the video list shows the status per video; the pipeline state is visible | TC-SA-07-01-007 |
| 1.1 Upload Video Tutorials (HD Quality) | Rule: video uploads are audit-logged with the video, actor, and timestamp | TC-SA-07-01-008 |
| 1.2 Subtitles and Multiple Language Support | Subtitle tracks: the subtitles attached to a video (the timed text) | TC-SA-07-01-011 |
| 1.2 Subtitles and Multiple Language Support | Multiple subtitle languages: more than one language track per video | TC-SA-07-01-012 |
| 1.2 Subtitles and Multiple Language Support | Language selection: a learner selects their subtitle language at playback | TC-SA-07-01-013 |
| 1.2 Subtitles and Multiple Language Support | Multiple language support: the video/subtitles available in the platform's supported languages | TC-SA-07-01-014 |
| 1.2 Subtitles and Multiple Language Support | Subtitle upload: the subtitle files uploaded and attached to the video | TC-SA-07-01-015 |
| 1.2 Subtitles and Multiple Language Support | Subtitle accuracy: the subtitles checked for timing and correctness | TC-SA-07-01-016 |
| 1.2 Subtitles and Multiple Language Support | Audit logging of subtitle/language changes | TC-SA-07-01-017 |
| 1.2 Subtitles and Multiple Language Support | Rule: subtitle tracks are timed text attached to a video; they are a content attribute, not a separate item | TC-SA-07-01-011 |
| 1.2 Subtitles and Multiple Language Support | Rule: multiple language tracks are supported per video; a learner selects their language at playback | TC-SA-07-01-012 |
| 1.2 Subtitles and Multiple Language Support | Rule: subtitle accuracy (timing, correctness) is checked; a faulty track is corrected and re-attached | TC-SA-07-01-016 |
| 1.2 Subtitles and Multiple Language Support | Rule: the absence of a subtitle selection is not an error; the video plays by default | TC-SA-07-01-018 |
| 1.2 Subtitles and Multiple Language Support | Rule: language coverage is reviewed; a gap (a supported language missing) is flagged, not silent | TC-SA-07-01-019 |
| 1.2 Subtitles and Multiple Language Support | Rule: subtitle/language changes are audit-logged with the video, tracks, and timestamp | TC-SA-07-01-017 |
| 1.3 Chapter/Topic Organization, Completion Time, and Difficulty Tagging | Chapter/topic organization: the video placed under a chapter/topic | TC-SA-07-01-020 |
| 1.3 Chapter/Topic Organization, Completion Time, and Difficulty Tagging | Estimated completion time: the video's expected duration set as its completion time | TC-SA-07-01-021 |
| 1.3 Chapter/Topic Organization, Completion Time, and Difficulty Tagging | Difficulty tagging: the video tagged beginner, intermediate, or advanced | TC-SA-07-01-022 |
| 1.3 Chapter/Topic Organization, Completion Time, and Difficulty Tagging | Level matching: the video's difficulty matched to the learner's level/context | TC-SA-07-01-023 |
| 1.3 Chapter/Topic Organization, Completion Time, and Difficulty Tagging | Attribute review: the organization, time, and tag checked for accuracy | TC-SA-07-01-024 |
| 1.3 Chapter/Topic Organization, Completion Time, and Difficulty Tagging | Visibility: the completion time and difficulty shown to the learner | TC-SA-07-01-025 |
| 1.3 Chapter/Topic Organization, Completion Time, and Difficulty Tagging | Audit logging of attribute changes | TC-SA-07-01-026 |
| 1.3 Chapter/Topic Organization, Completion Time, and Difficulty Tagging | Rule: the video is organized under a chapter/topic; the placement is its learning context | TC-SA-07-01-020 |
| 1.3 Chapter/Topic Organization, Completion Time, and Difficulty Tagging | Rule: the estimated completion time is the expected duration; it is shown to the learner and kept accurate (updated on a re-cut) | TC-SA-07-01-027 |
| 1.3 Chapter/Topic Organization, Completion Time, and Difficulty Tagging | Rule: the difficulty tag is one of three levels (beginner, intermediate, advanced); it matches the video's actual level | TC-SA-07-01-022 |
| 1.3 Chapter/Topic Organization, Completion Time, and Difficulty Tagging | Rule: level matching is reviewed: a video's difficulty is appropriate for its context; a mismatch is corrected | TC-SA-07-01-023 |
| 1.3 Chapter/Topic Organization, Completion Time, and Difficulty Tagging | Rule: the completion time and difficulty are visible to the learner; they inform the learner's choice | TC-SA-07-01-025 |
| 1.3 Chapter/Topic Organization, Completion Time, and Difficulty Tagging | Rule: attribute changes are audit-logged with the video, attributes, and timestamp | TC-SA-07-01-026 |

## 1.1 Upload Video Tutorials (HD Quality)

### TC-SA-07-01-001 — Video upload: the video file uploaded to the platform
**Type:** Positive
**Covers:** 1.1 → Video upload: the video file uploaded to the platform
**Preconditions:** A new video tutorial is ready; Super Admin is coordinating the content owner.
**Steps:**
1. Initiate the upload of the video file.
2. Complete the upload.
3. Verify the video file is uploaded to the platform and becomes a content item.
**Expected Result:** The video file is uploaded to the platform — it becomes a content item that can be organized, assigned, and published.
**Priority:** Critical

### TC-SA-07-01-002 — HD quality: the video is in high-definition quality
**Type:** Positive
**Covers:** 1.1 → HD quality: the video is in high-definition quality
**Preconditions:** An HD-quality video file is ready for upload.
**Steps:**
1. Upload the HD-quality video file.
2. Verify the platform accepts it as HD quality.
3. Verify the video plays in HD quality.
**Expected Result:** The video is in high-definition quality — the HD standard is met.
**Priority:** High

### TC-SA-07-01-003 — Upload validation: format, quality, and size checked on upload; a failing file is rejected with the specific reason
**Type:** Negative
**Covers:** 1.1 → Upload validation: format, quality, and size checked on upload; Rule: the upload is validated (format, quality, size); a failing file is rejected with the specific reason, not silently accepted
**Preconditions:** A video file with an unsupported format (or over the size limit) is ready.
**Steps:**
1. Attempt to upload the failing video file.
2. Verify the platform validates the upload (format, quality, size).
3. Verify the file is rejected with the specific reason (not silently accepted).
**Expected Result:** The upload is validated — the failing file is rejected with the specific reason, not silently accepted.
**Priority:** Critical

### TC-SA-07-01-004 — Processing: the video processed for streaming (available to play once processed)
**Type:** Positive
**Covers:** 1.1 → Processing: the video processed for streaming (available to play once processed)
**Preconditions:** A valid video file is uploaded.
**Steps:**
1. Upload the video file.
2. Verify the platform processes it for streaming.
3. Verify the video is available to play once processing completes.
**Expected Result:** The video is processed for streaming — it is available to play once processed.
**Priority:** Critical

### TC-SA-07-01-005 — Upload status: the upload's state (uploading, processing, ready, failed)
**Type:** Positive
**Covers:** 1.1 → Upload status: the upload's state (uploading, processing, ready, failed)
**Preconditions:** A video upload is in progress.
**Steps:**
1. Initiate the upload and observe the status.
2. Verify the status shows uploading, then processing.
3. Verify the status shows ready once processed (or failed if it fails).
**Expected Result:** The upload's state is shown: uploading, processing, ready, or failed.
**Priority:** High

### TC-SA-07-01-006 — Upload failure handling: a failed upload reported with the reason; the corrected file is re-uploaded, and the failure is recorded
**Type:** Negative
**Covers:** 1.1 → Upload failure handling: a failed upload reported with the reason; Rule: a failed upload is reported with the reason; the corrected file is re-uploaded, and the failure is recorded
**Preconditions:** A corrupt video file (or unsupported format) is uploaded.
**Steps:**
1. Upload the corrupt file and verify the failure is reported with the reason.
2. Obtain a corrected file and re-upload it.
3. Verify the failure is recorded in the audit trail.
**Expected Result:** The failed upload is reported with the reason — the corrected file is re-uploaded, and the failure is recorded.
**Priority:** Critical

### TC-SA-07-01-007 — Video list: the uploaded videos with their status and metadata; the pipeline state is visible
**Type:** Positive
**Covers:** 1.1 → Video list: the uploaded videos with their status and metadata; Rule: the video list shows the status per video; the pipeline state is visible
**Preconditions:** Multiple videos are uploaded in various states (ready, processing, failed).
**Steps:**
1. Open the video list.
2. Verify the uploaded videos are shown with their status and metadata.
3. Verify the pipeline state is visible (what is ready, what is processing, what failed).
**Expected Result:** The video list shows the status per video — the pipeline state is visible.
**Priority:** High

### TC-SA-07-01-008 — Video uploads are audit-logged with the video, actor, and timestamp
**Type:** Positive
**Covers:** 1.1 → Audit logging of video uploads; Rule: video uploads are audit-logged with the video, actor, and timestamp
**Preconditions:** Video uploads have occurred.
**Steps:**
1. Open the audit trail and filter by "video upload".
2. Verify entries show the video, the actor, and the timestamp.
**Expected Result:** The video uploads are audit-logged with the video, actor, and timestamp.
**Priority:** Critical

### TC-SA-07-01-009 — HD quality is the standard; a sub-standard upload is flagged
**Type:** Edge
**Covers:** 1.1 → Rule: HD quality is the standard; a sub-standard upload is flagged
**Preconditions:** A sub-standard (non-HD) video file is ready for upload.
**Steps:**
1. Upload the sub-standard video file.
2. Verify the upload is flagged as sub-standard (not silently accepted as HD).
**Expected Result:** The sub-standard upload is flagged — HD quality is the standard.
**Priority:** High

### TC-SA-07-01-010 — The video is playable only once processing completes
**Type:** Negative
**Covers:** 1.1 → Rule: the video is processed for streaming; it is playable only once processing completes
**Preconditions:** A video is uploaded and still processing.
**Steps:**
1. Attempt to play the video while it is still processing.
2. Verify the video is not playable until processing completes.
3. Verify the video is playable once processing completes.
**Expected Result:** The video is playable only once processing completes.
**Priority:** High

## 1.2 Subtitles and Multiple Language Support

### TC-SA-07-01-011 — Subtitle tracks: the subtitles attached to a video (the timed text); they are a content attribute, not a separate item
**Type:** Positive
**Covers:** 1.2 → Subtitle tracks: the subtitles attached to a video (the timed text); Rule: subtitle tracks are timed text attached to a video; they are a content attribute, not a separate item
**Preconditions:** A video tutorial exists; subtitle tracks (timed text) are ready.
**Steps:**
1. Attach the subtitle tracks: the timed text for the video, in the primary language.
2. Verify the subtitles are attached to the video as a content attribute (not a separate item).
**Expected Result:** The subtitle tracks (timed text) are attached to the video — a content attribute, not a separate item.
**Priority:** High

### TC-SA-07-01-012 — Multiple subtitle languages: more than one language track per video; a learner selects their language at playback
**Type:** Positive
**Covers:** 1.2 → Multiple subtitle languages: more than one language track per video; Rule: multiple language tracks are supported per video; a learner selects their language at playback
**Preconditions:** A video exists; multiple language subtitle tracks are ready.
**Steps:**
1. Add the additional language tracks (the subtitles in the platform's supported languages).
2. Verify more than one language track is supported per video.
3. Verify a learner can select their language at playback.
**Expected Result:** Multiple language tracks are supported per video — a learner selects their language at playback.
**Priority:** High

### TC-SA-07-01-013 — Language selection: a learner selects their subtitle language at playback; the correct track appears
**Type:** Positive
**Covers:** 1.2 → Language selection: a learner selects their subtitle language at playback
**Preconditions:** A video has multiple subtitle language tracks; a learner is at playback.
**Steps:**
1. As the learner, select a subtitle language at playback.
2. Verify the correct track appears for the selected language.
**Expected Result:** The learner selects their subtitle language at playback — the correct track appears.
**Priority:** High

### TC-SA-07-01-014 — Multiple language support: the video/subtitles available in the platform's supported languages
**Type:** Positive
**Covers:** 1.2 → Multiple language support: the video/subtitles available in the platform's supported languages
**Preconditions:** A video exists; the platform's supported languages are defined.
**Steps:**
1. Verify the video/subtitles are available in the platform's supported languages.
2. Verify the language coverage matches the platform's supported languages.
**Expected Result:** The video/subtitles are available in the platform's supported languages.
**Priority:** Medium

### TC-SA-07-01-015 — Subtitle upload: the subtitle files uploaded and attached to the video; the tracks are available at playback
**Type:** Positive
**Covers:** 1.2 → Subtitle upload: the subtitle files uploaded and attached to the video
**Preconditions:** Subtitle files are ready for a video.
**Steps:**
1. Upload the subtitle files.
2. Attach them to the video.
3. Verify the tracks are available at playback.
**Expected Result:** The subtitle files are uploaded and attached to the video — the tracks are available at playback.
**Priority:** High

### TC-SA-07-01-016 — Subtitle accuracy: the subtitles checked for timing and correctness; a faulty track is corrected and re-attached
**Type:** Negative
**Covers:** 1.2 → Subtitle accuracy: the subtitles checked for timing and correctness; Rule: subtitle accuracy (timing, correctness) is checked; a faulty track is corrected and re-attached
**Preconditions:** A video has a mis-timed or incorrect subtitle track.
**Steps:**
1. Check the subtitle accuracy: the timing matches the audio and the text is correct.
2. Identify the mis-timed or incorrect track.
3. Correct the track and re-attach it; verify the corrected track is accurate.
**Expected Result:** The subtitle accuracy is checked — the faulty track is corrected and re-attached.
**Priority:** High

### TC-SA-07-01-017 — Subtitle/language changes are audit-logged with the video, tracks, and timestamp
**Type:** Positive
**Covers:** 1.2 → Audit logging of subtitle/language changes; Rule: subtitle/language changes are audit-logged with the video, tracks, and timestamp
**Preconditions:** Subtitle/language changes have occurred (tracks added, corrected, re-attached).
**Steps:**
1. Open the audit trail and filter by "subtitle/language".
2. Verify entries show the video, the tracks, and the timestamp.
**Expected Result:** The subtitle/language changes are audit-logged with the video, tracks, and timestamp.
**Priority:** Critical

### TC-SA-07-01-018 — The absence of a subtitle selection is not an error; the video plays by default
**Type:** Edge
**Covers:** 1.2 → Rule: the absence of a subtitle selection is not an error; the video plays by default
**Preconditions:** A learner has no preferred subtitle; a video with subtitle tracks is at playback.
**Steps:**
1. As the learner, play the video without selecting a subtitle language.
2. Verify the video plays without subtitles (the default).
3. Verify the absence of a selection is not an error.
**Expected Result:** The absence of a subtitle selection is not an error — the video plays by default.
**Priority:** Medium

### TC-SA-07-01-019 — Language coverage is reviewed; a gap (a supported language missing) is flagged, not silent
**Type:** Negative
**Covers:** 1.2 → Rule: language coverage is reviewed; a gap (a supported language missing) is flagged, not silent
**Preconditions:** A video is missing a supported language track.
**Steps:**
1. Review the video's language coverage.
2. Verify the gap (a supported language missing) is flagged for the content owner.
3. Verify the gap is not silent.
**Expected Result:** The language coverage is reviewed — the gap (a supported language missing) is flagged, not silent.
**Priority:** High

## 1.3 Chapter/Topic Organization, Completion Time, and Difficulty Tagging

### TC-SA-07-01-020 — Chapter/topic organization: the video placed under a chapter/topic; the placement is its learning context
**Type:** Positive
**Covers:** 1.3 → Chapter/topic organization: the video placed under a chapter/topic; Rule: the video is organized under a chapter/topic; the placement is its learning context
**Preconditions:** A video tutorial exists; the curriculum has chapters/topics.
**Steps:**
1. Organize the video under its chapter/topic (the curriculum node it belongs to).
2. Verify the video is placed in the right learning context.
**Expected Result:** The video is organized under a chapter/topic — the placement is its learning context.
**Priority:** High

### TC-SA-07-01-021 — Estimated completion time: the video's expected duration set as its completion time
**Type:** Positive
**Covers:** 1.3 → Estimated completion time: the video's expected duration set as its completion time
**Preconditions:** A video tutorial exists.
**Steps:**
1. Set the estimated completion time: the video's expected duration.
2. Verify a learner knows the time investment before starting.
**Expected Result:** The estimated completion time is set — the video's expected duration is shown to the learner.
**Priority:** High

### TC-SA-07-01-022 — Difficulty tagging: the video tagged beginner, intermediate, or advanced; it matches the video's actual level
**Type:** Positive
**Covers:** 1.3 → Difficulty tagging: the video tagged beginner, intermediate, or advanced; Rule: the difficulty tag is one of three levels (beginner, intermediate, advanced); it matches the video's actual level
**Preconditions:** A video tutorial exists.
**Steps:**
1. Tag the difficulty: beginner, intermediate, or advanced, matching the video's actual level.
2. Verify the tag is one of the three levels.
3. Verify the tag matches the video's actual level.
**Expected Result:** The video is tagged beginner, intermediate, or advanced — the tag matches the video's actual level.
**Priority:** High

### TC-SA-07-01-023 — Level matching: the video's difficulty matched to the learner's level/context; a mismatch is corrected
**Type:** Negative
**Covers:** 1.3 → Level matching: the video's difficulty matched to the learner's level/context; Rule: level matching is reviewed: a video's difficulty is appropriate for its context; a mismatch is corrected
**Preconditions:** A beginner video is placed in an advanced track (a mismatch).
**Steps:**
1. Confirm the level matching: the video's difficulty is appropriate for the learners in its context.
2. Identify the mismatch (a beginner video in an advanced track).
3. Correct the mismatch and verify the video's difficulty is now appropriate for its context.
**Expected Result:** The level matching is reviewed — the mismatch is corrected; the video's difficulty is appropriate for its context.
**Priority:** High

### TC-SA-07-01-024 — Attribute review: the organization, time, and tag checked for accuracy
**Type:** Positive
**Covers:** 1.3 → Attribute review: the organization, time, and tag checked for accuracy
**Preconditions:** A video has its organization, completion time, and difficulty tag set.
**Steps:**
1. Review the attributes for accuracy: the completion time matches the actual duration, and the difficulty tag is right.
2. Verify a large discrepancy (if any) is corrected.
**Expected Result:** The attributes (organization, time, tag) are checked for accuracy — a discrepancy is corrected.
**Priority:** Medium

### TC-SA-07-01-025 — Visibility: the completion time and difficulty shown to the learner; they inform the learner's choice
**Type:** Positive
**Covers:** 1.3 → Visibility: the completion time and difficulty shown to the learner; Rule: the completion time and difficulty are visible to the learner; they inform the learner's choice
**Preconditions:** A video has its completion time and difficulty tag set; a learner is viewing the video.
**Steps:**
1. As the learner, view the video.
2. Verify the completion time and difficulty are shown.
3. Verify they inform the learner's choice.
**Expected Result:** The completion time and difficulty are visible to the learner — they inform the learner's choice.
**Priority:** Medium

### TC-SA-07-01-026 — Attribute changes are audit-logged with the video, attributes, and timestamp
**Type:** Positive
**Covers:** 1.3 → Audit logging of attribute changes; Rule: attribute changes are audit-logged with the video, attributes, and timestamp
**Preconditions:** A video's attributes (organization, completion time, difficulty tag) have been changed.
**Steps:**
1. Open the audit trail and filter by "video attribute".
2. Verify entries show the video, the attributes, and the timestamp.
**Expected Result:** The attribute changes are audit-logged with the video, attributes, and timestamp.
**Priority:** Critical

### TC-SA-07-01-027 — The estimated completion time is kept accurate (updated on a re-cut); the change is recorded
**Type:** Edge
**Covers:** 1.3 → Rule: the estimated completion time is the expected duration; it is shown to the learner and kept accurate (updated on a re-cut)
**Preconditions:** A video is re-cut (a shorter version); its completion time no longer matches.
**Steps:**
1. Update the completion time to match the new duration.
2. Verify the completion time is now accurate.
3. Verify the change is recorded in the audit trail.
**Expected Result:** The completion time is updated on a re-cut — it is kept accurate, and the change is recorded.
**Priority:** High
