# 4. Bookmarks & Notes — Test Cases

User Type: **Student**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: bookmarks_notes.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 Content Bookmarks | Bookmark a content item (video, podcast, article, lesson) | TC-ST-03-04-001 |
| 4.1 Content Bookmarks | "Saved" list of all bookmarks | TC-ST-03-04-002 |
| 4.1 Content Bookmarks | Filter bookmarks by course and content type | TC-ST-03-04-003 |
| 4.1 Content Bookmarks | Remove a bookmark | TC-ST-03-04-004 |
| 4.1 Content Bookmarks | Bookmark state visible on the content item (bookmarked / not) | TC-ST-03-04-005 |
| 4.1 Content Bookmarks | Bookmarks private to the Student | TC-ST-03-04-006 |
| 4.1 Content Bookmarks | Bookmarks sync across web and mobile | TC-ST-03-04-007 |
| 4.1 Content Bookmarks | Bookmark event logging (add, remove) | TC-ST-03-04-008 |
| 4.1 Content Bookmarks | Audit logging of the content bookmarks | TC-ST-03-04-009 |
| 4.1 Content Bookmarks | Rule: A content item can be bookmarked once; toggling removes it. | TC-ST-03-04-001 |
| 4.1 Content Bookmarks | Rule: Bookmarks are private to the Student and not shared. | TC-ST-03-04-002 |
| 4.1 Content Bookmarks | Rule: Bookmarks are synchronized across web and mobile. | TC-ST-03-04-003 |
| 4.1 Content Bookmarks | Rule: Removing a bookmark does not delete the underlying content. | TC-ST-03-04-004 |
| 4.1 Content Bookmarks | Rule: Filters operate on course and content type. | TC-ST-03-04-005 |
| 4.1 Content Bookmarks | Rule: Bookmark events (add, remove) are logged with the item and the timestamp. | TC-ST-03-04-006 |
| 4.1 Content Bookmarks | Rule: The content bookmarks is audit-logged with the account, the item, and the timestamp. | TC-ST-03-04-007 |
| 4.2 Personal Notes | Create a note attached to a content item or course | TC-ST-03-04-010 |
| 4.2 Personal Notes | Note text entry with autosave | TC-ST-03-04-011 |
| 4.2 Personal Notes | Edit and delete a note | TC-ST-03-04-012 |
| 4.2 Personal Notes | List of notes filtered by course and item | TC-ST-03-04-013 |
| 4.2 Personal Notes | Notes visible only to the Student | TC-ST-03-04-014 |
| 4.2 Personal Notes | Notes sync across web and mobile | TC-ST-03-04-015 |
| 4.2 Personal Notes | Note character limit with counter | TC-ST-03-04-016 |
| 4.2 Personal Notes | Note event logging (create, edit, delete) | TC-ST-03-04-017 |
| 4.2 Personal Notes | Audit logging of the personal notes | TC-ST-03-04-018 |
| 4.2 Personal Notes | Rule: A note is attached to a specific content item or course. | TC-ST-03-04-010 |
| 4.2 Personal Notes | Rule: Notes autosave as the Student types; an explicit save is not required. | TC-ST-03-04-011 |
| 4.2 Personal Notes | Rule: Notes are private to the Student and not shared. | TC-ST-03-04-012 |
| 4.2 Personal Notes | Rule: A note has a character limit; the counter warns as the limit is approached. | TC-ST-03-04-013 |
| 4.2 Personal Notes | Rule: Deleting a note is permanent for that item. | TC-ST-03-04-014 |
| 4.2 Personal Notes | Rule: Note events (create, edit, delete) are logged with the item and the timestamp. | TC-ST-03-04-015 |
| 4.2 Personal Notes | Rule: The personal notes is audit-logged with the account, the item, and the timestamp. | TC-ST-03-04-016 |
| 4.3 Highlighting | Select text in an article to create a highlight | TC-ST-03-04-019 |
| 4.3 Highlighting | Choose a highlight color | TC-ST-03-04-020 |
| 4.3 Highlighting | Attach an optional note to a highlight | TC-ST-03-04-021 |
| 4.3 Highlighting | "Highlights" list filtered by course and item | TC-ST-03-04-022 |
| 4.3 Highlighting | Jump to a highlight from the list | TC-ST-03-04-023 |
| 4.3 Highlighting | Edit the note or remove a highlight | TC-ST-03-04-024 |
| 4.3 Highlighting | Highlights visible in the content | TC-ST-03-04-025 |
| 4.3 Highlighting | Highlights private to the Student | TC-ST-03-04-026 |
| 4.3 Highlighting | Highlight event logging (create, edit, remove) | TC-ST-03-04-027 |
| 4.3 Highlighting | Audit logging of the highlighting | TC-ST-03-04-028 |
| 4.3 Highlighting | Rule: A highlight is created by selecting text in an article; it is tied to that text span. | TC-ST-03-04-019 |
| 4.3 Highlighting | Rule: A highlight color is chosen from the offered palette. | TC-ST-03-04-020 |
| 4.3 Highlighting | Rule: A note on a highlight is optional. | TC-ST-03-04-021 |
| 4.3 Highlighting | Rule: Highlights are private to the Student and not shared. | TC-ST-03-04-022 |
| 4.3 Highlighting | Rule: Removing a highlight also removes its note. | TC-ST-03-04-023 |
| 4.3 Highlighting | Rule: Highlight events (create, edit, remove) are logged with the item and the timestamp. | TC-ST-03-04-024 |
| 4.3 Highlighting | Rule: The highlighting is audit-logged with the account, the item, and the timestamp. | TC-ST-03-04-025 |

## 4.1 Content Bookmarks

### TC-ST-03-04-001 — Bookmark a content item (video, podcast, article, lesson)
**Type:** Positive
**Covers:** 4.1 → Bookmark a content item (video, podcast, article, lesson); Rule: A content item can be bookmarked once; toggling removes it.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Bookmark a content item (video.
2. Observe the result and verify the full behavior: Bookmark a content item (video, podcast, article, lesson).
**Expected Result:** Bookmark a content item (video, podcast, article, lesson) — delivered exactly as documented.
**Priority:** Critical

### TC-ST-03-04-002 — "Saved" list of all bookmarks
**Type:** Positive
**Covers:** 4.1 → "Saved" list of all bookmarks; Rule: Bookmarks are private to the Student and not shared.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: "Saved" list of all bookmarks.
2. Observe the result and verify the full behavior: "Saved" list of all bookmarks.
**Expected Result:** "Saved" list of all bookmarks — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-003 — Filter bookmarks by course and content type
**Type:** Positive
**Covers:** 4.1 → Filter bookmarks by course and content type; Rule: Bookmarks are synchronized across web and mobile.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Filter bookmarks by course and content type.
2. Observe the result and verify the full behavior: Filter bookmarks by course and content type.
**Expected Result:** Filter bookmarks by course and content type — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-004 — Remove a bookmark
**Type:** Positive
**Covers:** 4.1 → Remove a bookmark; Rule: Removing a bookmark does not delete the underlying content.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Remove a bookmark.
2. Observe the result and verify the full behavior: Remove a bookmark.
**Expected Result:** Remove a bookmark — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-005 — Bookmark state visible on the content item (bookmarked / not)
**Type:** Positive
**Covers:** 4.1 → Bookmark state visible on the content item (bookmarked / not); Rule: Filters operate on course and content type.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Bookmark state visible on the content item (bookmarked / not).
2. Observe the result and verify the full behavior: Bookmark state visible on the content item (bookmarked / not).
**Expected Result:** Bookmark state visible on the content item (bookmarked / not) — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-006 — Bookmarks private to the Student
**Type:** Positive
**Covers:** 4.1 → Bookmarks private to the Student; Rule: Bookmark events (add, remove) are logged with the item and the timestamp.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Bookmarks private to the Student.
2. Observe the result and verify the full behavior: Bookmarks private to the Student.
**Expected Result:** Bookmarks private to the Student — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-007 — Bookmarks sync across web and mobile
**Type:** Positive
**Covers:** 4.1 → Bookmarks sync across web and mobile; Rule: The content bookmarks is audit-logged with the account, the item, and the timestamp.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Bookmarks sync across web and mobile.
2. Observe the result and verify the full behavior: Bookmarks sync across web and mobile.
**Expected Result:** Bookmarks sync across web and mobile — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-008 — Bookmark event logging (add, remove)
**Type:** Positive
**Covers:** 4.1 → Bookmark event logging (add, remove)
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Bookmark event logging (add.
2. Observe the result and verify the full behavior: Bookmark event logging (add, remove).
**Expected Result:** Bookmark event logging (add, remove) — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-009 — Audit logging of the content bookmarks
**Type:** Positive
**Covers:** 4.1 → Audit logging of the content bookmarks
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, perform the action associated with: Audit logging of the content bookmarks.
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 Personal Notes

### TC-ST-03-04-010 — Create a note attached to a content item or course
**Type:** Positive
**Covers:** 4.2 → Create a note attached to a content item or course; Rule: A note is attached to a specific content item or course.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Create a note attached to a content item or course.
2. Observe the result and verify the full behavior: Create a note attached to a content item or course.
**Expected Result:** Create a note attached to a content item or course — delivered exactly as documented.
**Priority:** Critical

### TC-ST-03-04-011 — Note text entry with autosave
**Type:** Positive
**Covers:** 4.2 → Note text entry with autosave; Rule: Notes autosave as the Student types; an explicit save is not required.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Note text entry with autosave.
2. Observe the result and verify the full behavior: Note text entry with autosave.
**Expected Result:** Note text entry with autosave — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-012 — Edit and delete a note
**Type:** Positive
**Covers:** 4.2 → Edit and delete a note; Rule: Notes are private to the Student and not shared.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Edit and delete a note.
2. Observe the result and verify the full behavior: Edit and delete a note.
**Expected Result:** Edit and delete a note — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-013 — List of notes filtered by course and item
**Type:** Positive
**Covers:** 4.2 → List of notes filtered by course and item; Rule: A note has a character limit; the counter warns as the limit is approached.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: List of notes filtered by course and item.
2. Observe the result and verify the full behavior: List of notes filtered by course and item.
**Expected Result:** List of notes filtered by course and item — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-014 — Notes visible only to the Student
**Type:** Positive
**Covers:** 4.2 → Notes visible only to the Student; Rule: Deleting a note is permanent for that item.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Notes visible only to the Student.
2. Observe the result and verify the full behavior: Notes visible only to the Student.
**Expected Result:** Notes visible only to the Student — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-015 — Notes sync across web and mobile
**Type:** Positive
**Covers:** 4.2 → Notes sync across web and mobile; Rule: Note events (create, edit, delete) are logged with the item and the timestamp.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Notes sync across web and mobile.
2. Observe the result and verify the full behavior: Notes sync across web and mobile.
**Expected Result:** Notes sync across web and mobile — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-016 — Note character limit with counter
**Type:** Edge
**Covers:** 4.2 → Note character limit with counter; Rule: The personal notes is audit-logged with the account, the item, and the timestamp.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Note character limit with counter.
2. Observe the result and verify the full behavior: Note character limit with counter.
**Expected Result:** Note character limit with counter — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-017 — Note event logging (create, edit, delete)
**Type:** Positive
**Covers:** 4.2 → Note event logging (create, edit, delete)
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Note event logging (create.
2. Observe the result and verify the full behavior: Note event logging (create, edit, delete).
**Expected Result:** Note event logging (create, edit, delete) — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-018 — Audit logging of the personal notes
**Type:** Positive
**Covers:** 4.2 → Audit logging of the personal notes
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, perform the action associated with: Audit logging of the personal notes.
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 Highlighting

### TC-ST-03-04-019 — Select text in an article to create a highlight
**Type:** Positive
**Covers:** 4.3 → Select text in an article to create a highlight; Rule: A highlight is created by selecting text in an article; it is tied to that text span.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Select text in an article to create a highlight.
2. Observe the result and verify the full behavior: Select text in an article to create a highlight.
**Expected Result:** Select text in an article to create a highlight — delivered exactly as documented.
**Priority:** Critical

### TC-ST-03-04-020 — Choose a highlight color
**Type:** Positive
**Covers:** 4.3 → Choose a highlight color; Rule: A highlight color is chosen from the offered palette.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Choose a highlight color.
2. Observe the result and verify the full behavior: Choose a highlight color.
**Expected Result:** Choose a highlight color — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-021 — Attach an optional note to a highlight
**Type:** Positive
**Covers:** 4.3 → Attach an optional note to a highlight; Rule: A note on a highlight is optional.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Attach an optional note to a highlight.
2. Observe the result and verify the full behavior: Attach an optional note to a highlight.
**Expected Result:** Attach an optional note to a highlight — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-022 — "Highlights" list filtered by course and item
**Type:** Positive
**Covers:** 4.3 → "Highlights" list filtered by course and item; Rule: Highlights are private to the Student and not shared.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: "Highlights" list filtered by course and item.
2. Observe the result and verify the full behavior: "Highlights" list filtered by course and item.
**Expected Result:** "Highlights" list filtered by course and item — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-023 — Jump to a highlight from the list
**Type:** Positive
**Covers:** 4.3 → Jump to a highlight from the list; Rule: Removing a highlight also removes its note.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Jump to a highlight from the list.
2. Observe the result and verify the full behavior: Jump to a highlight from the list.
**Expected Result:** Jump to a highlight from the list — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-024 — Edit the note or remove a highlight
**Type:** Positive
**Covers:** 4.3 → Edit the note or remove a highlight; Rule: Highlight events (create, edit, remove) are logged with the item and the timestamp.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Edit the note or remove a highlight.
2. Observe the result and verify the full behavior: Edit the note or remove a highlight.
**Expected Result:** Edit the note or remove a highlight — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-025 — Highlights visible in the content
**Type:** Positive
**Covers:** 4.3 → Highlights visible in the content; Rule: The highlighting is audit-logged with the account, the item, and the timestamp.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Highlights visible in the content.
2. Observe the result and verify the full behavior: Highlights visible in the content.
**Expected Result:** Highlights visible in the content — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-026 — Highlights private to the Student
**Type:** Positive
**Covers:** 4.3 → Highlights private to the Student
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Highlights private to the Student.
2. Observe the result and verify the full behavior: Highlights private to the Student.
**Expected Result:** Highlights private to the Student — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-027 — Highlight event logging (create, edit, remove)
**Type:** Positive
**Covers:** 4.3 → Highlight event logging (create, edit, remove)
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Highlight event logging (create.
2. Observe the result and verify the full behavior: Highlight event logging (create, edit, remove).
**Expected Result:** Highlight event logging (create, edit, remove) — delivered exactly as documented.
**Priority:** High

### TC-ST-03-04-028 — Audit logging of the highlighting
**Type:** Positive
**Covers:** 4.3 → Audit logging of the highlighting
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, perform the action associated with: Audit logging of the highlighting.
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
