# 4. Trial & Freemium Configuration — Test Cases

User Type: **Super Administrator**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: trial_freemium_configuration.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 Configure Free Trial Duration and Access Level | Trial duration setting (the number of days/period for a new trial) | TC-SA-04-04-001 |
| 4.1 Configure Free Trial Duration and Access Level | Trial access level: the features and content a trial user can use | TC-SA-04-04-002 |
| 4.1 Configure Free Trial Duration and Access Level | Trial eligibility: who can start a trial (new users, once per user rules) | TC-SA-04-04-003 |
| 4.1 Configure Free Trial Duration and Access Level | Trial end behavior: what happens when the trial expires (downgrade to freemium, prompt to subscribe) | TC-SA-04-04-004 |
| 4.1 Configure Free Trial Duration and Access Level | Trial-to-paid conversion path: the subscription prompt at trial end | TC-SA-04-04-005 |
| 4.1 Configure Free Trial Duration and Access Level | Trial state visibility: active trials, expiring trials, and their access level | TC-SA-04-04-006 |
| 4.1 Configure Free Trial Duration and Access Level | Audit logging of trial configuration changes | TC-SA-04-04-007 |
| 4.1 Configure Free Trial Duration and Access Level | Rule: the trial duration and access level are consistent for all new trials; there is no ad-hoc trial without a configuration change | TC-SA-04-04-008 |
| 4.1 Configure Free Trial Duration and Access Level | Rule: trial eligibility (once per user) is enforced; a user who has used a trial cannot start another without an explicit, audited exception | TC-SA-04-04-009 |
| 4.1 Configure Free Trial Duration and Access Level | Rule: trial-end behavior is defined (downgrade to freemium and/or prompt to subscribe); it is not an abrupt cutoff without communication | TC-SA-04-04-004 |
| 4.1 Configure Free Trial Duration and Access Level | Rule: the access level is enforced like any permission: a trial user cannot reach premium features during the trial | TC-SA-04-04-010 |
| 4.1 Configure Free Trial Duration and Access Level | Rule: expiring trials are visible so conversion outreach can be timed | TC-SA-04-04-006 |
| 4.1 Configure Free Trial Duration and Access Level | Rule: trial configuration changes are audit-logged with the acting admin and timestamp | TC-SA-04-04-007 |
| 4.2 Configure Freemium Content Limits | Free-content set: the courses/content available on the freemium tier | TC-SA-04-04-011 |
| 4.2 Configure Freemium Content Limits | Usage limits on constrained capabilities (e.g., a monthly cap on AI interactions) | TC-SA-04-04-012 |
| 4.2 Configure Freemium Content Limits | Limit enforcement: the cap is tracked per user and enforced with a clear upgrade prompt at the limit | TC-SA-04-04-013 |
| 4.2 Configure Freemium Content Limits | Free-content designation: marking courses/content as freemium-available | TC-SA-04-04-014 |
| 4.2 Configure Freemium Content Limits | Limit and free-content visibility: the current freemium offering and limits | TC-SA-04-04-015 |
| 4.2 Configure Freemium Content Limits | Upgrade path: the prompt at a limit or when premium content is reached | TC-SA-04-04-016 |
| 4.2 Configure Freemium Content Limits | Audit logging of freemium configuration changes | TC-SA-04-04-017 |
| 4.2 Configure Freemium Content Limits | Rule: the free-content set is explicit: a course is freemium-available only if designated; otherwise it is subscription-gated | TC-SA-04-04-018 |
| 4.2 Configure Freemium Content Limits | Rule: usage limits are tracked per user and enforced with a clear message and upgrade prompt at the cap — not a silent block | TC-SA-04-04-013 |
| 4.2 Configure Freemium Content Limits | Rule: the limit resets per the defined period (monthly); the reset is automatic and visible to the user | TC-SA-04-04-019 |
| 4.2 Configure Freemium Content Limits | Rule: freemium users can always use the basic platform (account, free content); the limits constrain the premium capabilities, not the account | TC-SA-04-04-020 |
| 4.2 Configure Freemium Content Limits | Rule: the upgrade path is consistent: reaching a limit or premium content prompts subscription, routed to the membership/checkout flow | TC-SA-04-04-016 |
| 4.2 Configure Freemium Content Limits | Rule: freemium configuration changes are audit-logged with the acting admin and timestamp | TC-SA-04-04-017 |

## 4.1 Configure Free Trial Duration and Access Level

### TC-SA-04-04-001 — The trial duration is set (number of days/period for a new trial)
**Type:** Positive
**Covers:** 4.1 → Trial duration setting (the number of days/period for a new trial)
**Preconditions:** The trial duration is to be set to 14 days.
**Steps:**
1. Open Trial & Freemium Configuration.
2. Set the trial duration to 14 days.
3. Start a new trial and verify it lasts 14 days.
**Expected Result:** The trial duration is 14 days; a new trial starts with a 14-day period.
**Priority:** Critical

### TC-SA-04-04-002 — The trial access level defines the features and content a trial user can use
**Type:** Positive
**Covers:** 4.1 → Trial access level: the features and content a trial user can use
**Preconditions:** The trial access level is configured: courses, assessments, and progress tracking are allowed; premium-only features are not.
**Steps:**
1. Start a trial.
2. Verify the trial user can access courses, assessments, and progress tracking.
3. Verify the trial user cannot access premium-only features.
**Expected Result:** The trial user can access the configured features (courses, assessments, progress tracking) and cannot access premium-only features — the access level is enforced.
**Priority:** Critical

### TC-SA-04-04-003 — Trial eligibility: a new user can start one trial; the once-per-user rule is enforced
**Type:** Positive
**Covers:** 4.1 → Trial eligibility: who can start a trial (new users, once per user rules)
**Preconditions:** A new user has never used a trial.
**Steps:**
1. Have the new user start a trial.
2. Verify the trial starts successfully.
3. After the trial ends, attempt to start a second trial.
**Expected Result:** The new user starts one trial successfully; the second trial is blocked by the once-per-user rule.
**Priority:** Critical

### TC-SA-04-04-004 — Trial end behavior: at expiry, the account downgrades to freemium and the user is prompted to subscribe
**Type:** Positive
**Covers:** 4.1 → Trial end behavior: what happens when the trial expires (downgrade to freemium, prompt to subscribe); Rule: trial-end behavior is defined (downgrade to freemium and/or prompt to subscribe); it is not an abrupt cutoff without communication
**Preconditions:** A trial is at its final day (day 14 of 14).
**Steps:**
1. Let the trial expire.
2. Verify the account downgrades to the freemium level.
3. Verify the user is prompted to subscribe (not an abrupt cutoff).
**Expected Result:** At expiry, the account downgrades to freemium and the user is prompted to subscribe — the transition is communicated, not abrupt.
**Priority:** Critical

### TC-SA-04-04-005 — Trial-to-paid conversion path: the subscription prompt at trial end
**Type:** Positive
**Covers:** 4.1 → Trial-to-paid conversion path: the subscription prompt at trial end
**Preconditions:** A trial user is at day 13 (one day before expiry).
**Steps:**
1. Verify the expiry prompt is shown at day 13.
2. Have the user subscribe (convert to paid).
3. Verify the account is now a paid membership with full access.
**Expected Result:** The expiry prompt is shown; the user subscribes and converts to a paid membership with full access — the conversion path works.
**Priority:** High

### TC-SA-04-04-006 — Trial state visibility: active trials, expiring trials, and their access level; expiring trials are visible for conversion outreach
**Type:** Positive
**Covers:** 4.1 → Trial state visibility: active trials, expiring trials, and their access level; Rule: expiring trials are visible so conversion outreach can be timed
**Preconditions:** 50 active trials exist; 8 expire within 3 days.
**Steps:**
1. Open the trial state view.
2. Verify the 50 active trials with their start/end dates and access level.
3. Verify the 8 expiring-soon trials are listed.
**Expected Result:** The trial state view shows all active trials with dates and access level; the 8 expiring-soon trials are visible for conversion outreach.
**Priority:** Medium

### TC-SA-04-04-007 — Trial configuration changes are audit-logged with the duration, access level, and timestamp
**Type:** Positive
**Covers:** 4.1 → Audit logging of trial configuration changes; Rule: trial configuration changes are audit-logged with the acting admin and timestamp
**Preconditions:** The trial duration and access level are changed.
**Steps:**
1. Open the audit trail and filter by "trial".
2. Verify the entry shows the duration, access level, the acting admin, and the timestamp.
**Expected Result:** The trial configuration change is audit-logged with the duration, access level, acting admin, and timestamp.
**Priority:** Critical

### TC-SA-04-04-008 — There is no ad-hoc trial without a configuration change; all new trials follow the configuration
**Type:** Negative
**Covers:** 4.1 → Rule: the trial duration and access level are consistent for all new trials; there is no ad-hoc trial without a configuration change
**Preconditions:** The trial is configured for 14 days with a specific access level.
**Steps:**
1. Start three new trials.
2. Verify all three have the 14-day duration and the configured access level.
3. Attempt to create a trial with a different duration without a configuration change.
**Expected Result:** All three trials follow the configuration (14 days, configured access level); an ad-hoc trial with a different duration is not possible without a configuration change.
**Priority:** High

### TC-SA-04-04-009 — A user who has used a trial cannot start another without an explicit, audited exception
**Type:** Negative
**Covers:** 4.1 → Rule: trial eligibility (once per user) is enforced; a user who has used a trial cannot start another without an explicit, audited exception
**Preconditions:** A user has already used a trial.
**Steps:**
1. Attempt to start a second trial for the user.
2. Verify the attempt is blocked.
3. Create an explicit, audited exception and verify the second trial is allowed.
**Expected Result:** The second trial is blocked without an exception; with an explicit, audited exception, it is allowed — the once-per-user rule is enforced.
**Priority:** Critical

### TC-SA-04-04-010 — A trial user cannot reach premium features during the trial (access level enforced like a permission)
**Type:** Negative
**Covers:** 4.1 → Rule: the access level is enforced like any permission: a trial user cannot reach premium features during the trial
**Preconditions:** A trial user is active; a premium-only feature exists.
**Steps:**
1. As the trial user, attempt to access the premium-only feature.
**Expected Result:** The premium-only feature is not accessible to the trial user — the access level is enforced like a permission.
**Priority:** Critical

## 4.2 Configure Freemium Content Limits

### TC-SA-04-04-011 — The free-content set defines the courses/content available on the freemium tier
**Type:** Positive
**Covers:** 4.2 → Free-content set: the courses/content available on the freemium tier
**Preconditions:** 10 courses are designated as freemium-available.
**Steps:**
1. Open the freemium configuration.
2. Verify the 10 designated courses are in the free-content set.
3. As a freemium user, verify the 10 courses are accessible without a subscription.
**Expected Result:** The 10 designated courses are in the free-content set and accessible to freemium users without a subscription.
**Priority:** Critical

### TC-SA-04-04-012 — Usage limits on constrained capabilities (e.g., a monthly cap on AI interactions)
**Type:** Positive
**Covers:** 4.2 → Usage limits on constrained capabilities (e.g., a monthly cap on AI interactions)
**Preconditions:** The AI-interaction limit is set to 20 per user per month on the freemium tier.
**Steps:**
1. Verify the AI-interaction limit is 20/month for freemium users.
2. As a freemium user, use AI interactions and verify the usage is tracked against the cap.
**Expected Result:** The AI-interaction limit is 20/month; the freemium user's usage is tracked against the cap.
**Priority:** High

### TC-SA-04-04-013 — Limit enforcement: the cap is tracked per user and enforced with a clear upgrade prompt at the limit (not a silent block)
**Type:** Positive
**Covers:** 4.2 → Limit enforcement: the cap is tracked per user and enforced with a clear upgrade prompt at the limit; Rule: usage limits are tracked per user and enforced with a clear message and upgrade prompt at the cap — not a silent block
**Preconditions:** A freemium user has used 20 of 20 AI interactions this month.
**Steps:**
1. As the freemium user, attempt the 21st AI interaction.
2. Verify the limit message with the upgrade prompt is shown.
**Expected Result:** The 21st interaction is blocked with a clear limit message and upgrade prompt (subscribe for unlimited AI) — not a silent block.
**Priority:** Critical

### TC-SA-04-04-014 — Free-content designation: courses/content can be marked as freemium-available
**Type:** Positive
**Covers:** 4.2 → Free-content designation: marking courses/content as freemium-available
**Preconditions:** A course is to be designated as freemium-available.
**Steps:**
1. Mark the course as freemium-available in the configuration.
2. Verify the course is now in the free-content set.
**Expected Result:** The course is designated as freemium-available and appears in the free-content set.
**Priority:** High

### TC-SA-04-04-015 — Limit and free-content visibility: the current freemium offering and limits are visible
**Type:** Positive
**Covers:** 4.2 → Limit and free-content visibility: the current freemium offering and limits
**Preconditions:** The freemium tier has 10 free courses and a 20/month AI cap.
**Steps:**
1. Open the freemium visibility view.
2. Verify the free-content set (10 courses), the current limits (20/month AI), and the freemium user counts.
**Expected Result:** The freemium visibility view shows the free-content set, the current limits, and the freemium user counts.
**Priority:** Medium

### TC-SA-04-04-016 — Upgrade path: reaching a limit or premium content prompts subscription, routed to the membership/checkout flow
**Type:** Positive
**Covers:** 4.2 → Upgrade path: the prompt at a limit or when premium content is reached; Rule: the upgrade path is consistent: reaching a limit or premium content prompts subscription, routed to the membership/checkout flow
**Preconditions:** A freemium user reaches the AI cap and attempts to open a premium course.
**Steps:**
1. At the AI cap, verify the upgrade prompt routes to the membership/checkout flow.
2. Attempt to open a premium (non-free) course and verify the upgrade prompt routes to the membership/checkout flow.
**Expected Result:** Both the limit and the premium content prompt subscription, routed to the membership/checkout flow — the upgrade path is consistent.
**Priority:** High

### TC-SA-04-04-017 — Freemium configuration changes are audit-logged with the free-content set, the limits, and the timestamp
**Type:** Positive
**Covers:** 4.2 → Audit logging of freemium configuration changes; Rule: freemium configuration changes are audit-logged with the acting admin and timestamp
**Preconditions:** The free-content set and the AI limit are changed.
**Steps:**
1. Open the audit trail and filter by "freemium".
2. Verify the entry shows the free-content set, the limits, the acting admin, and the timestamp.
**Expected Result:** The freemium configuration change is audit-logged with the free-content set, the limits, acting admin, and timestamp.
**Priority:** Critical

### TC-SA-04-04-018 — A course is freemium-available only if designated; otherwise it is subscription-gated
**Type:** Negative
**Covers:** 4.2 → Rule: the free-content set is explicit: a course is freemium-available only if designated; otherwise it is subscription-gated
**Preconditions:** A course is not designated as freemium-available.
**Steps:**
1. As a freemium user, attempt to access the non-designated course.
**Expected Result:** The non-designated course is subscription-gated — the freemium user cannot access it without a subscription.
**Priority:** Critical

### TC-SA-04-04-019 — The limit resets per the defined period (monthly); the reset is automatic and visible to the user
**Type:** Positive
**Covers:** 4.2 → Rule: the limit resets per the defined period (monthly); the reset is automatic and visible to the user
**Preconditions:** A freemium user has used 20/20 AI interactions; the month rolls over.
**Steps:**
1. Let the month roll over.
2. Verify the AI-interaction count resets to 0 automatically.
3. Verify the reset is visible to the user.
**Expected Result:** The AI-interaction count resets to 0 at the monthly boundary automatically; the reset is visible to the user.
**Priority:** High

### TC-SA-04-04-020 — Freemium users can always use the basic platform (account, free content); limits constrain premium capabilities, not the account
**Type:** Positive
**Covers:** 4.2 → Rule: freemium users can always use the basic platform (account, free content); the limits constrain the premium capabilities, not the account
**Preconditions:** A freemium user has hit the AI cap.
**Steps:**
1. As the freemium user (at the AI cap), verify the account and free content are still accessible.
2. Verify only the premium capability (AI) is constrained.
**Expected Result:** The freemium user can still use the account and free content; only the premium capability (AI) is constrained — the account is not blocked.
**Priority:** High
