# 1. Discussion Forums — Test Cases

User Type: **Student**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: discussion_forums.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 Forum Browsing and Topics | Forums organized by subject and topic | TC-ST-10-01-001 |
| 1.1 Forum Browsing and Topics | Browse discussions and threads | TC-ST-10-01-002 |
| 1.1 Forum Browsing and Topics | Most active and recent topics highlighted | TC-ST-10-01-003 |
| 1.1 Forum Browsing and Topics | Search the forums by keyword | TC-ST-10-01-004 |
| 1.1 Forum Browsing and Topics | Thread view with replies | TC-ST-10-01-005 |
| 1.1 Forum Browsing and Topics | Forum available on web and mobile | TC-ST-10-01-006 |
| 1.1 Forum Browsing and Topics | Forum access per the Student's subscription | TC-ST-10-01-007 |
| 1.1 Forum Browsing and Topics | Forum event logging (viewed, searched) | TC-ST-10-01-008 |
| 1.1 Forum Browsing and Topics | Audit logging of the forum browsing and topics | TC-ST-10-01-009 |
| 1.1 Forum Browsing and Topics | Rule: Forums are organized by subject and topic. | TC-ST-10-01-001 |
| 1.1 Forum Browsing and Topics | Rule: The most active and recent topics are highlighted. | TC-ST-10-01-002 |
| 1.1 Forum Browsing and Topics | Rule: Search matches thread titles and reply text. | TC-ST-10-01-003 |
| 1.1 Forum Browsing and Topics | Rule: Forum access is per the Student's subscription. | TC-ST-10-01-004 |
| 1.1 Forum Browsing and Topics | Rule: Forum events (viewed, searched) are logged with the forum and the timestamp. | TC-ST-10-01-005 |
| 1.1 Forum Browsing and Topics | Rule: The forum browsing and topics is audit-logged with the account, the forum, and the timestamp. | TC-ST-10-01-006 |
| 1.2 Posting and Replying | Start a new discussion thread | TC-ST-10-01-010 |
| 1.2 Posting and Replying | Reply to an existing thread | TC-ST-10-01-011 |
| 1.2 Posting and Replying | Ask a question in a thread | TC-ST-10-01-012 |
| 1.2 Posting and Replying | Share an explanation or answer | TC-ST-10-01-013 |
| 1.2 Posting and Replying | Edit and delete the Student's own posts | TC-ST-10-01-014 |
| 1.2 Posting and Replying | Posts moderated per community guidelines | TC-ST-10-01-015 |
| 1.2 Posting and Replying | Post notifications (replies to the Student's thread) | TC-ST-10-01-016 |
| 1.2 Posting and Replying | Post event logging (posted, replied, edited, deleted) | TC-ST-10-01-017 |
| 1.2 Posting and Replying | Audit logging of the posting and replying | TC-ST-10-01-018 |
| 1.2 Posting and Replying | Rule: A thread requires a title and a body. | TC-ST-10-01-010 |
| 1.2 Posting and Replying | Rule: The Student can edit and delete their own posts. | TC-ST-10-01-011 |
| 1.2 Posting and Replying | Rule: Posts are moderated per the community guidelines. | TC-ST-10-01-012 |
| 1.2 Posting and Replying | Rule: A reply notifies the thread's author. | TC-ST-10-01-013 |
| 1.2 Posting and Replying | Rule: Post events (posted, replied, edited, deleted) are logged with the thread and the timestamp. | TC-ST-10-01-014 |
| 1.2 Posting and Replying | Rule: The posting and replying is audit-logged with the account, the thread, and the timestamp. | TC-ST-10-01-015 |
| 1.3 Thread Following and Notifications | Follow a thread or topic | TC-ST-10-01-019 |
| 1.3 Thread Following and Notifications | Notification for new replies in followed threads | TC-ST-10-01-020 |
| 1.3 Thread Following and Notifications | Mark a thread as read | TC-ST-10-01-021 |
| 1.3 Thread Following and Notifications | List of followed threads and topics | TC-ST-10-01-022 |
| 1.3 Thread Following and Notifications | Unfollow a thread or topic | TC-ST-10-01-023 |
| 1.3 Thread Following and Notifications | Follow count shown | TC-ST-10-01-024 |
| 1.3 Thread Following and Notifications | Follow event logging (followed, unfollowed) | TC-ST-10-01-025 |
| 1.3 Thread Following and Notifications | Audit logging of the thread following and notifications | TC-ST-10-01-026 |
| 1.3 Thread Following and Notifications | Rule: Following a thread subscribes the Student to its replies. | TC-ST-10-01-019 |
| 1.3 Thread Following and Notifications | Rule: A notification is sent for new replies in followed threads. | TC-ST-10-01-020 |
| 1.3 Thread Following and Notifications | Rule: A thread can be marked as read. | TC-ST-10-01-021 |
| 1.3 Thread Following and Notifications | Rule: Unfollowing stops the notifications for that thread. | TC-ST-10-01-022 |
| 1.3 Thread Following and Notifications | Rule: Follow events (followed, unfollowed) are logged with the thread and the timestamp. | TC-ST-10-01-023 |
| 1.3 Thread Following and Notifications | Rule: The thread following and notifications is audit-logged with the account, the thread, and the timestamp. | TC-ST-10-01-024 |

## 1.1 Forum Browsing and Topics

### TC-ST-10-01-001 — Forums organized by subject and topic
**Type:** Positive
**Covers:** 1.1 → Forums organized by subject and topic; Rule: Forums are organized by subject and topic.
**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: Forums organized by subject and topic.
2. Observe the result and verify the full behavior: Forums organized by subject and topic.
**Expected Result:** Forums organized by subject and topic — delivered exactly as documented.
**Priority:** Critical

### TC-ST-10-01-002 — Browse discussions and threads
**Type:** Positive
**Covers:** 1.1 → Browse discussions and threads; Rule: The most active and recent topics are highlighted.
**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: Browse discussions and threads.
2. Observe the result and verify the full behavior: Browse discussions and threads.
**Expected Result:** Browse discussions and threads — delivered exactly as documented.
**Priority:** High

### TC-ST-10-01-003 — Most active and recent topics highlighted
**Type:** Positive
**Covers:** 1.1 → Most active and recent topics highlighted; Rule: Search matches thread titles and reply text.
**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: Most active and recent topics highlighted.
2. Observe the result and verify the full behavior: Most active and recent topics highlighted.
**Expected Result:** Most active and recent topics highlighted — delivered exactly as documented.
**Priority:** High

### TC-ST-10-01-004 — Search the forums by keyword
**Type:** Positive
**Covers:** 1.1 → Search the forums by keyword; Rule: Forum access is per the Student's subscription.
**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: Search the forums by keyword.
2. Observe the result and verify the full behavior: Search the forums by keyword.
**Expected Result:** Search the forums by keyword — delivered exactly as documented.
**Priority:** High

### TC-ST-10-01-005 — Thread view with replies
**Type:** Positive
**Covers:** 1.1 → Thread view with replies; Rule: Forum events (viewed, searched) are logged with the forum 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: Thread view with replies.
2. Observe the result and verify the full behavior: Thread view with replies.
**Expected Result:** Thread view with replies — delivered exactly as documented.
**Priority:** High

### TC-ST-10-01-006 — Forum available on web and mobile
**Type:** Positive
**Covers:** 1.1 → Forum available on web and mobile; Rule: The forum browsing and topics is audit-logged with the account, the forum, 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: Forum available on web and mobile.
2. Observe the result and verify the full behavior: Forum available on web and mobile.
**Expected Result:** Forum available on web and mobile — delivered exactly as documented.
**Priority:** High

### TC-ST-10-01-007 — Forum access per the Student's subscription
**Type:** Positive
**Covers:** 1.1 → Forum access per the Student's subscription
**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: Forum access per the Student's subscription.
2. Observe the result and verify the full behavior: Forum access per the Student's subscription.
**Expected Result:** Forum access per the Student's subscription — delivered exactly as documented.
**Priority:** High

### TC-ST-10-01-008 — Forum event logging (viewed, searched)
**Type:** Positive
**Covers:** 1.1 → Forum event logging (viewed, searched)
**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: Forum event logging (viewed.
2. Observe the result and verify the full behavior: Forum event logging (viewed, searched).
**Expected Result:** Forum event logging (viewed, searched) — delivered exactly as documented.
**Priority:** High

### TC-ST-10-01-009 — Audit logging of the forum browsing and topics
**Type:** Positive
**Covers:** 1.1 → Audit logging of the forum browsing and topics
**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 forum browsing and topics.
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

## 1.2 Posting and Replying

### TC-ST-10-01-010 — Start a new discussion thread
**Type:** Positive
**Covers:** 1.2 → Start a new discussion thread; Rule: A thread requires a title and a body.
**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: Start a new discussion thread.
2. Observe the result and verify the full behavior: Start a new discussion thread.
**Expected Result:** Start a new discussion thread — delivered exactly as documented.
**Priority:** Critical

### TC-ST-10-01-011 — Reply to an existing thread
**Type:** Positive
**Covers:** 1.2 → Reply to an existing thread; Rule: The Student can edit and delete their own posts.
**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: Reply to an existing thread.
2. Observe the result and verify the full behavior: Reply to an existing thread.
**Expected Result:** Reply to an existing thread — delivered exactly as documented.
**Priority:** High

### TC-ST-10-01-012 — Ask a question in a thread
**Type:** Positive
**Covers:** 1.2 → Ask a question in a thread; Rule: Posts are moderated per the community guidelines.
**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: Ask a question in a thread.
2. Observe the result and verify the full behavior: Ask a question in a thread.
**Expected Result:** Ask a question in a thread — delivered exactly as documented.
**Priority:** High

### TC-ST-10-01-013 — Share an explanation or answer
**Type:** Positive
**Covers:** 1.2 → Share an explanation or answer; Rule: A reply notifies the thread's author.
**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: Share an explanation or answer.
2. Observe the result and verify the full behavior: Share an explanation or answer.
**Expected Result:** Share an explanation or answer — delivered exactly as documented.
**Priority:** High

### TC-ST-10-01-014 — Edit and delete the Student's own posts
**Type:** Positive
**Covers:** 1.2 → Edit and delete the Student's own posts; Rule: Post events (posted, replied, edited, deleted) are logged with the thread 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 and delete the Student's own posts.
2. Observe the result and verify the full behavior: Edit and delete the Student's own posts.
**Expected Result:** Edit and delete the Student's own posts — delivered exactly as documented.
**Priority:** High

### TC-ST-10-01-015 — Posts moderated per community guidelines
**Type:** Positive
**Covers:** 1.2 → Posts moderated per community guidelines; Rule: The posting and replying is audit-logged with the account, the thread, 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: Posts moderated per community guidelines.
2. Observe the result and verify the full behavior: Posts moderated per community guidelines.
**Expected Result:** Posts moderated per community guidelines — delivered exactly as documented.
**Priority:** High

### TC-ST-10-01-016 — Post notifications (replies to the Student's thread)
**Type:** Positive
**Covers:** 1.2 → Post notifications (replies to the Student's thread)
**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: Post notifications (replies to the Student's thread).
2. Observe the result and verify the full behavior: Post notifications (replies to the Student's thread).
**Expected Result:** Post notifications (replies to the Student's thread) — delivered exactly as documented.
**Priority:** High

### TC-ST-10-01-017 — Post event logging (posted, replied, edited, deleted)
**Type:** Positive
**Covers:** 1.2 → Post event logging (posted, replied, edited, deleted)
**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: Post event logging (posted.
2. Observe the result and verify the full behavior: Post event logging (posted, replied, edited, deleted).
**Expected Result:** Post event logging (posted, replied, edited, deleted) — delivered exactly as documented.
**Priority:** High

### TC-ST-10-01-018 — Audit logging of the posting and replying
**Type:** Positive
**Covers:** 1.2 → Audit logging of the posting and replying
**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 posting and replying.
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

## 1.3 Thread Following and Notifications

### TC-ST-10-01-019 — Follow a thread or topic
**Type:** Positive
**Covers:** 1.3 → Follow a thread or topic; Rule: Following a thread subscribes the Student to its replies.
**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: Follow a thread or topic.
2. Observe the result and verify the full behavior: Follow a thread or topic.
**Expected Result:** Follow a thread or topic — delivered exactly as documented.
**Priority:** Critical

### TC-ST-10-01-020 — Notification for new replies in followed threads
**Type:** Positive
**Covers:** 1.3 → Notification for new replies in followed threads; Rule: A notification is sent for new replies in followed threads.
**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: Notification for new replies in followed threads.
2. Observe the result and verify the full behavior: Notification for new replies in followed threads.
**Expected Result:** Notification for new replies in followed threads — delivered exactly as documented.
**Priority:** High

### TC-ST-10-01-021 — Mark a thread as read
**Type:** Positive
**Covers:** 1.3 → Mark a thread as read; Rule: A thread can be marked as read.
**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: Mark a thread as read.
2. Observe the result and verify the full behavior: Mark a thread as read.
**Expected Result:** Mark a thread as read — delivered exactly as documented.
**Priority:** High

### TC-ST-10-01-022 — List of followed threads and topics
**Type:** Positive
**Covers:** 1.3 → List of followed threads and topics; Rule: Unfollowing stops the notifications for that thread.
**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 followed threads and topics.
2. Observe the result and verify the full behavior: List of followed threads and topics.
**Expected Result:** List of followed threads and topics — delivered exactly as documented.
**Priority:** High

### TC-ST-10-01-023 — Unfollow a thread or topic
**Type:** Positive
**Covers:** 1.3 → Unfollow a thread or topic; Rule: Follow events (followed, unfollowed) are logged with the thread 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: Unfollow a thread or topic.
2. Observe the result and verify the full behavior: Unfollow a thread or topic.
**Expected Result:** Unfollow a thread or topic — delivered exactly as documented.
**Priority:** High

### TC-ST-10-01-024 — Follow count shown
**Type:** Positive
**Covers:** 1.3 → Follow count shown; Rule: The thread following and notifications is audit-logged with the account, the thread, 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: Follow count shown.
2. Observe the result and verify the full behavior: Follow count shown.
**Expected Result:** Follow count shown — delivered exactly as documented.
**Priority:** High

### TC-ST-10-01-025 — Follow event logging (followed, unfollowed)
**Type:** Positive
**Covers:** 1.3 → Follow event logging (followed, unfollowed)
**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: Follow event logging (followed.
2. Observe the result and verify the full behavior: Follow event logging (followed, unfollowed).
**Expected Result:** Follow event logging (followed, unfollowed) — delivered exactly as documented.
**Priority:** High

### TC-ST-10-01-026 — Audit logging of the thread following and notifications
**Type:** Positive
**Covers:** 1.3 → Audit logging of the thread following and notifications
**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 thread following and 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
