# 1. Points & Rewards — Test Cases

User Type: **Student**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: points_rewards.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 Earning Points | Points for completing videos | TC-ST-09-01-001 |
| 1.1 Earning Points | Points for passing quizzes | TC-ST-09-01-002 |
| 1.1 Earning Points | Points for taking exams | TC-ST-09-01-003 |
| 1.1 Earning Points | Points for studying flashcards | TC-ST-09-01-004 |
| 1.1 Earning Points | Points for maintaining streaks | TC-ST-09-01-005 |
| 1.1 Earning Points | Points for creating quality content (e.g., flashcard decks) | TC-ST-09-01-006 |
| 1.1 Earning Points | Points awarded automatically on the action | TC-ST-09-01-007 |
| 1.1 Earning Points | Points balance shown on the dashboard | TC-ST-09-01-008 |
| 1.1 Earning Points | Points event logging (earned, action) | TC-ST-09-01-009 |
| 1.1 Earning Points | Audit logging of the earning points | TC-ST-09-01-010 |
| 1.1 Earning Points | Rule: Points are awarded automatically on the qualifying action. | TC-ST-09-01-001 |
| 1.1 Earning Points | Rule: Each action type has a defined point value. | TC-ST-09-01-002 |
| 1.1 Earning Points | Rule: Streak points are awarded per the streak rules. | TC-ST-09-01-003 |
| 1.1 Earning Points | Rule: Content points are awarded for quality content per the platform's rules. | TC-ST-09-01-004 |
| 1.1 Earning Points | Rule: Points events (earned, action) are logged with the action and the timestamp. | TC-ST-09-01-005 |
| 1.1 Earning Points | Rule: The earning points is audit-logged with the account, the action, and the timestamp. | TC-ST-09-01-006 |
| 1.2 Points Balance and History | Current points balance | TC-ST-09-01-011 |
| 1.2 Points Balance and History | Points history (earned and spent) | TC-ST-09-01-012 |
| 1.2 Points Balance and History | Filter the history by action type and date | TC-ST-09-01-013 |
| 1.2 Points Balance and History | Points per period (day, week, month) | TC-ST-09-01-014 |
| 1.2 Points Balance and History | Balance and history on the dashboard | TC-ST-09-01-015 |
| 1.2 Points Balance and History | History available on web and mobile | TC-ST-09-01-016 |
| 1.2 Points Balance and History | History event logging (viewed) | TC-ST-09-01-017 |
| 1.2 Points Balance and History | Audit logging of the points balance and history | TC-ST-09-01-018 |
| 1.2 Points Balance and History | Rule: The balance reflects all earned and spent points. | TC-ST-09-01-011 |
| 1.2 Points Balance and History | Rule: The history is chronological and filterable by action type and date. | TC-ST-09-01-012 |
| 1.2 Points Balance and History | Rule: Points per period are aggregated. | TC-ST-09-01-013 |
| 1.2 Points Balance and History | Rule: The history is available on web and mobile. | TC-ST-09-01-014 |
| 1.2 Points Balance and History | Rule: History events (viewed) are logged with the timestamp. | TC-ST-09-01-015 |
| 1.2 Points Balance and History | Rule: The points balance and history is audit-logged with the account and the timestamp. | TC-ST-09-01-016 |
| 1.3 Rewards and Redemption | Rewards catalog (virtual and, where configured, tangible) | TC-ST-09-01-019 |
| 1.3 Rewards and Redemption | Point cost shown per reward | TC-ST-09-01-020 |
| 1.3 Rewards and Redemption | Redeem a reward | TC-ST-09-01-021 |
| 1.3 Rewards and Redemption | Reward delivered on redemption | TC-ST-09-01-022 |
| 1.3 Rewards and Redemption | Redeemed rewards list | TC-ST-09-01-023 |
| 1.3 Rewards and Redemption | Insufficient points handled gracefully | TC-ST-09-01-024 |
| 1.3 Rewards and Redemption | Redemption event logging (redeemed, reward) | TC-ST-09-01-025 |
| 1.3 Rewards and Redemption | Audit logging of the rewards and redemption | TC-ST-09-01-026 |
| 1.3 Rewards and Redemption | Rule: A reward has a defined point cost. | TC-ST-09-01-019 |
| 1.3 Rewards and Redemption | Rule: Redemption requires sufficient points. | TC-ST-09-01-020 |
| 1.3 Rewards and Redemption | Rule: A reward is delivered on successful redemption. | TC-ST-09-01-021 |
| 1.3 Rewards and Redemption | Rule: Insufficient points is handled with a clear message. | TC-ST-09-01-022 |
| 1.3 Rewards and Redemption | Rule: Redemption events (redeemed, reward) are logged with the reward and the timestamp. | TC-ST-09-01-023 |
| 1.3 Rewards and Redemption | Rule: The rewards and redemption is audit-logged with the account, the reward, and the timestamp. | TC-ST-09-01-024 |

## 1.1 Earning Points

### TC-ST-09-01-001 — Points for completing videos
**Type:** Positive
**Covers:** 1.1 → Points for completing videos; Rule: Points are awarded automatically on the qualifying action.
**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: Points for completing videos.
2. Observe the result and verify the full behavior: Points for completing videos.
**Expected Result:** Points for completing videos — delivered exactly as documented.
**Priority:** Critical

### TC-ST-09-01-002 — Points for passing quizzes
**Type:** Positive
**Covers:** 1.1 → Points for passing quizzes; Rule: Each action type has a defined point value.
**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: Points for passing quizzes.
2. Observe the result and verify the full behavior: Points for passing quizzes.
**Expected Result:** Points for passing quizzes — delivered exactly as documented.
**Priority:** High

### TC-ST-09-01-003 — Points for taking exams
**Type:** Positive
**Covers:** 1.1 → Points for taking exams; Rule: Streak points are awarded per the streak rules.
**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: Points for taking exams.
2. Observe the result and verify the full behavior: Points for taking exams.
**Expected Result:** Points for taking exams — delivered exactly as documented.
**Priority:** High

### TC-ST-09-01-004 — Points for studying flashcards
**Type:** Positive
**Covers:** 1.1 → Points for studying flashcards; Rule: Content points are awarded for quality content per the platform's rules.
**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: Points for studying flashcards.
2. Observe the result and verify the full behavior: Points for studying flashcards.
**Expected Result:** Points for studying flashcards — delivered exactly as documented.
**Priority:** High

### TC-ST-09-01-005 — Points for maintaining streaks
**Type:** Positive
**Covers:** 1.1 → Points for maintaining streaks; Rule: Points events (earned, action) are logged with the action 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: Points for maintaining streaks.
2. Observe the result and verify the full behavior: Points for maintaining streaks.
**Expected Result:** Points for maintaining streaks — delivered exactly as documented.
**Priority:** High

### TC-ST-09-01-006 — Points for creating quality content (e.g., flashcard decks)
**Type:** Positive
**Covers:** 1.1 → Points for creating quality content (e.g., flashcard decks); Rule: The earning points is audit-logged with the account, the action, 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: Points for creating quality content (e.g..
2. Observe the result and verify the full behavior: Points for creating quality content (e.g., flashcard decks).
**Expected Result:** Points for creating quality content (e.g., flashcard decks) — delivered exactly as documented.
**Priority:** High

### TC-ST-09-01-007 — Points awarded automatically on the action
**Type:** Positive
**Covers:** 1.1 → Points awarded automatically on the action
**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: Points awarded automatically on the action.
2. Observe the result and verify the full behavior: Points awarded automatically on the action.
**Expected Result:** Points awarded automatically on the action — delivered exactly as documented.
**Priority:** High

### TC-ST-09-01-008 — Points balance shown on the dashboard
**Type:** Positive
**Covers:** 1.1 → Points balance shown on the dashboard
**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: Points balance shown on the dashboard.
2. Observe the result and verify the full behavior: Points balance shown on the dashboard.
**Expected Result:** Points balance shown on the dashboard — delivered exactly as documented.
**Priority:** High

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

### TC-ST-09-01-010 — Audit logging of the earning points
**Type:** Positive
**Covers:** 1.1 → Audit logging of the earning points
**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 earning points.
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 Points Balance and History

### TC-ST-09-01-011 — Current points balance
**Type:** Positive
**Covers:** 1.2 → Current points balance; Rule: The balance reflects all earned and spent points.
**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: Current points balance.
2. Observe the result and verify the full behavior: Current points balance.
**Expected Result:** Current points balance — delivered exactly as documented.
**Priority:** Critical

### TC-ST-09-01-012 — Points history (earned and spent)
**Type:** Positive
**Covers:** 1.2 → Points history (earned and spent); Rule: The history is chronological and filterable by action type and date.
**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: Points history (earned and spent).
2. Observe the result and verify the full behavior: Points history (earned and spent).
**Expected Result:** Points history (earned and spent) — delivered exactly as documented.
**Priority:** High

### TC-ST-09-01-013 — Filter the history by action type and date
**Type:** Positive
**Covers:** 1.2 → Filter the history by action type and date; Rule: Points per period are aggregated.
**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 the history by action type and date.
2. Observe the result and verify the full behavior: Filter the history by action type and date.
**Expected Result:** Filter the history by action type and date — delivered exactly as documented.
**Priority:** High

### TC-ST-09-01-014 — Points per period (day, week, month)
**Type:** Positive
**Covers:** 1.2 → Points per period (day, week, month); Rule: The history is available on 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: Points per period (day.
2. Observe the result and verify the full behavior: Points per period (day, week, month).
**Expected Result:** Points per period (day, week, month) — delivered exactly as documented.
**Priority:** High

### TC-ST-09-01-015 — Balance and history on the dashboard
**Type:** Positive
**Covers:** 1.2 → Balance and history on the dashboard; Rule: History events (viewed) are logged with 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: Balance and history on the dashboard.
2. Observe the result and verify the full behavior: Balance and history on the dashboard.
**Expected Result:** Balance and history on the dashboard — delivered exactly as documented.
**Priority:** High

### TC-ST-09-01-016 — History available on web and mobile
**Type:** Positive
**Covers:** 1.2 → History available on web and mobile; Rule: The points balance and history is audit-logged with the account 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: History available on web and mobile.
2. Observe the result and verify the full behavior: History available on web and mobile.
**Expected Result:** History available on web and mobile — delivered exactly as documented.
**Priority:** High

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

### TC-ST-09-01-018 — Audit logging of the points balance and history
**Type:** Positive
**Covers:** 1.2 → Audit logging of the points balance and history
**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 points balance and history.
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 Rewards and Redemption

### TC-ST-09-01-019 — Rewards catalog (virtual and, where configured, tangible)
**Type:** Positive
**Covers:** 1.3 → Rewards catalog (virtual and, where configured, tangible); Rule: A reward has a defined point cost.
**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: Rewards catalog (virtual and.
2. Observe the result and verify the full behavior: Rewards catalog (virtual and, where configured, tangible).
**Expected Result:** Rewards catalog (virtual and, where configured, tangible) — delivered exactly as documented.
**Priority:** Critical

### TC-ST-09-01-020 — Point cost shown per reward
**Type:** Positive
**Covers:** 1.3 → Point cost shown per reward; Rule: Redemption requires sufficient points.
**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: Point cost shown per reward.
2. Observe the result and verify the full behavior: Point cost shown per reward.
**Expected Result:** Point cost shown per reward — delivered exactly as documented.
**Priority:** High

### TC-ST-09-01-021 — Redeem a reward
**Type:** Positive
**Covers:** 1.3 → Redeem a reward; Rule: A reward is delivered on successful redemption.
**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: Redeem a reward.
2. Observe the result and verify the full behavior: Redeem a reward.
**Expected Result:** Redeem a reward — delivered exactly as documented.
**Priority:** High

### TC-ST-09-01-022 — Reward delivered on redemption
**Type:** Positive
**Covers:** 1.3 → Reward delivered on redemption; Rule: Insufficient points is handled with a clear message.
**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: Reward delivered on redemption.
2. Observe the result and verify the full behavior: Reward delivered on redemption.
**Expected Result:** Reward delivered on redemption — delivered exactly as documented.
**Priority:** High

### TC-ST-09-01-023 — Redeemed rewards list
**Type:** Positive
**Covers:** 1.3 → Redeemed rewards list; Rule: Redemption events (redeemed, reward) are logged with the reward 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: Redeemed rewards list.
2. Observe the result and verify the full behavior: Redeemed rewards list.
**Expected Result:** Redeemed rewards list — delivered exactly as documented.
**Priority:** High

### TC-ST-09-01-024 — Insufficient points handled gracefully
**Type:** Positive
**Covers:** 1.3 → Insufficient points handled gracefully; Rule: The rewards and redemption is audit-logged with the account, the reward, 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: Insufficient points handled gracefully.
2. Observe the result and verify the full behavior: Insufficient points handled gracefully.
**Expected Result:** Insufficient points handled gracefully — delivered exactly as documented.
**Priority:** High

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

### TC-ST-09-01-026 — Audit logging of the rewards and redemption
**Type:** Positive
**Covers:** 1.3 → Audit logging of the rewards and redemption
**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 rewards and redemption.
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
