# 4. Flexible Upgrade Pricing — Test Cases

User Type: **Super Administrator**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: flexible_upgrade_pricing.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 Prorated Pricing for Adding Subjects Anytime | Proration method: the method (the remaining-period proration, the daily rate) | TC-SA-12-04-001 |
| 4.1 Prorated Pricing for Adding Subjects Anytime | Proration scope: the scope (the added subject, the remaining period) | TC-SA-12-04-002 |
| 4.1 Prorated Pricing for Adding Subjects Anytime | Proration calculation: the calculation (the remaining days, the daily rate, the prorated price) | TC-SA-12-04-003 |
| 4.1 Prorated Pricing for Adding Subjects Anytime | Rule definition: the rules (the method, the rounding) | TC-SA-12-04-004 |
| 4.1 Prorated Pricing for Adding Subjects Anytime | Price application: the price applied (the added subject is the prorated price) | TC-SA-12-04-005 |
| 4.1 Prorated Pricing for Adding Subjects Anytime | Price record: the price recorded (the learner, the subject, the remaining period, the prorated price) | TC-SA-12-04-006 |
| 4.1 Prorated Pricing for Adding Subjects Anytime | Audit logging of the proration rules and the applications | TC-SA-12-04-007 |
| 4.1 Prorated Pricing for Adding Subjects Anytime | Rule: the proration method is the remaining-period proration (the daily rate); the method is the fairness | TC-SA-12-04-001 |
| 4.1 Prorated Pricing for Adding Subjects Anytime | Rule: the proration scope is the added subject and the remaining period; the scope is the upgrade | TC-SA-12-04-002 |
| 4.1 Prorated Pricing for Adding Subjects Anytime | Rule: the proration calculation is explicit (the remaining days, the daily rate, the prorated price); the calculation is the price | TC-SA-12-04-003 |
| 4.1 Prorated Pricing for Adding Subjects Anytime | Rule: a rule change (a proration rule updated) is recorded (the new method, the new rounding, the time); it is auditable | TC-SA-12-04-004 |
| 4.1 Prorated Pricing for Adding Subjects Anytime | Rule: the proration rules are visible (the method, the rounding); the upgrade pricing is managed | TC-SA-12-04-008 |
| 4.1 Prorated Pricing for Adding Subjects Anytime | Rule: proration rules and applications are audit-logged with the learner, subject, and timestamp | TC-SA-12-04-007 |
| 4.2 Upgrade from Single to Multiple Subjects | Upgrade method: the method (the difference pricing, the proration) | TC-SA-12-04-009 |
| 4.2 Upgrade from Single to Multiple Subjects | Upgrade scope: the scope (the single-subject to the multi-subject, the remaining period) | TC-SA-12-04-010 |
| 4.2 Upgrade from Single to Multiple Subjects | Upgrade calculation: the calculation (the multi-subject price, the single-subject price, the difference, the proration) | TC-SA-12-04-011 |
| 4.2 Upgrade from Single to Multiple Subjects | Rule definition: the rules (the method, the proration) | TC-SA-12-04-012 |
| 4.2 Upgrade from Single to Multiple Subjects | Price application: the price applied (the upgrade is the difference price) | TC-SA-12-04-013 |
| 4.2 Upgrade from Single to Multiple Subjects | Price record: the price recorded (the learner, the upgrade, the difference, the prorated price) | TC-SA-12-04-014 |
| 4.2 Upgrade from Single to Multiple Subjects | Audit logging of the upgrade rules and the applications | TC-SA-12-04-015 |
| 4.2 Upgrade from Single to Multiple Subjects | Rule: the upgrade method is the difference pricing (the proration); the method is the fairness | TC-SA-12-04-009 |
| 4.2 Upgrade from Single to Multiple Subjects | Rule: the upgrade scope is the single-subject to the multi-subject and the remaining period; the scope is the upgrade | TC-SA-12-04-010 |
| 4.2 Upgrade from Single to Multiple Subjects | Rule: the upgrade calculation is explicit (the multi-subject price, the single-subject price, the difference, the proration); the calculation is the price | TC-SA-12-04-011 |
| 4.2 Upgrade from Single to Multiple Subjects | Rule: a rule change (an upgrade rule updated) is recorded (the new method, the new proration, the time); it is auditable | TC-SA-12-04-012 |
| 4.2 Upgrade from Single to Multiple Subjects | Rule: the upgrade rules are visible (the method, the proration); the upgrade pricing is managed | TC-SA-12-04-016 |
| 4.2 Upgrade from Single to Multiple Subjects | Rule: upgrade rules and applications are audit-logged with the learner, upgrade, and timestamp | TC-SA-12-04-015 |
| 4.3 Upgrade from One Grade to Another | Grade-upgrade method: the method (the difference pricing, the proration) | TC-SA-12-04-017 |
| 4.3 Upgrade from One Grade to Another | Grade-upgrade scope: the scope (the old grade to the new grade, the remaining period) | TC-SA-12-04-018 |
| 4.3 Upgrade from One Grade to Another | Grade-upgrade calculation: the calculation (the new grade's price, the old grade's price, the difference, the proration) | TC-SA-12-04-019 |
| 4.3 Upgrade from One Grade to Another | Rule definition: the rules (the method, the proration) | TC-SA-12-04-020 |
| 4.3 Upgrade from One Grade to Another | Price application: the price applied (the grade upgrade is the difference price) | TC-SA-12-04-021 |
| 4.3 Upgrade from One Grade to Another | Price record: the price recorded (the learner, the grade upgrade, the difference, the prorated price) | TC-SA-12-04-022 |
| 4.3 Upgrade from One Grade to Another | Audit logging of the grade-upgrade rules and the applications | TC-SA-12-04-023 |
| 4.3 Upgrade from One Grade to Another | Rule: the grade-upgrade method is the difference pricing (the proration); the method is the fairness | TC-SA-12-04-017 |
| 4.3 Upgrade from One Grade to Another | Rule: the grade-upgrade scope is the old grade to the new grade and the remaining period; the scope is the grade upgrade | TC-SA-12-04-018 |
| 4.3 Upgrade from One Grade to Another | Rule: the grade-upgrade calculation is explicit (the new grade's price, the old grade's price, the difference, the proration); the calculation is the price | TC-SA-12-04-019 |
| 4.3 Upgrade from One Grade to Another | Rule: a rule change (a grade-upgrade rule updated) is recorded (the new method, the new proration, the time); it is auditable | TC-SA-12-04-020 |
| 4.3 Upgrade from One Grade to Another | Rule: the grade-upgrade rules are visible (the method, the proration); the grade-upgrade pricing is managed | TC-SA-12-04-024 |
| 4.3 Upgrade from One Grade to Another | Rule: grade-upgrade rules and applications are audit-logged with the learner, grade upgrade, and timestamp | TC-SA-12-04-023 |
| 4.4 Transfer Unused Duration to New Subscription | Transfer method: the method (the unused-duration transfer, the duration calculation) | TC-SA-12-04-025 |
| 4.4 Transfer Unused Duration to New Subscription | Transfer scope: the scope (the old subscription's unused duration, the new subscription) | TC-SA-12-04-026 |
| 4.4 Transfer Unused Duration to New Subscription | Transfer calculation: the calculation (the unused duration, the transfer to the new subscription) | TC-SA-12-04-027 |
| 4.4 Transfer Unused Duration to New Subscription | Rule definition: the rules (the method, the calculation) | TC-SA-12-04-028 |
| 4.4 Transfer Unused Duration to New Subscription | Transfer application: the transfer applied (the unused duration is transferred to the new subscription) | TC-SA-12-04-029 |
| 4.4 Transfer Unused Duration to New Subscription | Transfer record: the transfer recorded (the learner, the old subscription, the unused duration, the new subscription) | TC-SA-12-04-030 |
| 4.4 Transfer Unused Duration to New Subscription | Audit logging of the transfer rules and the applications | TC-SA-12-04-031 |
| 4.4 Transfer Unused Duration to New Subscription | Rule: the transfer method is the unused-duration transfer (the duration calculation); the method is the fairness | TC-SA-12-04-025 |
| 4.4 Transfer Unused Duration to New Subscription | Rule: the transfer scope is the old subscription's unused duration and the new subscription; the scope is the transfer | TC-SA-12-04-026 |
| 4.4 Transfer Unused Duration to New Subscription | Rule: the transfer calculation is explicit (the unused duration, the transfer to the new subscription); the calculation is the transfer | TC-SA-12-04-027 |
| 4.4 Transfer Unused Duration to New Subscription | Rule: a rule change (a transfer rule updated) is recorded (the new method, the new calculation, the time); it is auditable | TC-SA-12-04-028 |
| 4.4 Transfer Unused Duration to New Subscription | Rule: the transfer rules are visible (the method, the calculation); the duration transfer is managed | TC-SA-12-04-032 |
| 4.4 Transfer Unused Duration to New Subscription | Rule: transfer rules and applications are audit-logged with the learner, old subscription, and timestamp | TC-SA-12-04-031 |

## 4.1 Prorated Pricing for Adding Subjects Anytime

### TC-SA-12-04-001 — Proration method: the method (the remaining-period proration, the daily rate); the method is the fairness
**Type:** Positive
**Covers:** 4.1 → Proration method: the method (the remaining-period proration, the daily rate); Rule: the proration method is the remaining-period proration (the daily rate); the method is the fairness
**Preconditions:** The Super Admin opens the flexible upgrade pricing.
**Steps:**
1. Open the proration method.
2. Verify the method is the remaining-period proration (the daily rate).
3. Verify the method is the fairness (the learner pays only for the remaining period).
**Expected Result:** The proration method is the remaining-period proration (the daily rate) — the method is the fairness.
**Priority:** Critical

### TC-SA-12-04-002 — Proration scope: the scope (the added subject, the remaining period); the scope is the upgrade
**Type:** Positive
**Covers:** 4.1 → Proration scope: the scope (the added subject, the remaining period); Rule: the proration scope is the added subject and the remaining period; the scope is the upgrade
**Preconditions:** A learner has an active subscription with a remaining period.
**Steps:**
1. Open the proration scope for the added subject.
2. Verify the scope is the added subject and the remaining period.
3. Verify the scope is the upgrade.
**Expected Result:** The proration scope is the added subject and the remaining period — the scope is the upgrade.
**Priority:** High

### TC-SA-12-04-003 — Proration calculation: the calculation (the remaining days, the daily rate, the prorated price); the calculation is the price
**Type:** Positive
**Covers:** 4.1 → Proration calculation: the calculation (the remaining days, the daily rate, the prorated price); Rule: the proration calculation is explicit (the remaining days, the daily rate, the prorated price); the calculation is the price
**Preconditions:** A learner adds a subject mid-subscription (e.g., 60 days remaining, daily rate known).
**Steps:**
1. Open the proration calculation.
2. Verify it shows the remaining days, the daily rate, and the prorated price.
3. Verify the prorated price = the remaining days × the daily rate (the calculation is explicit).
**Expected Result:** The proration calculation is explicit — the remaining days, the daily rate, and the prorated price are shown and correct.
**Priority:** Critical

### TC-SA-12-04-004 — Rule definition: the rules (the method, the rounding); a rule change is recorded and auditable
**Type:** Positive
**Covers:** 4.1 → Rule definition: the rules (the method, the rounding); Rule: a rule change (a proration rule updated) is recorded (the new method, the new rounding, the time); it is auditable
**Preconditions:** The proration rules are defined (the method, the rounding).
**Steps:**
1. Open the proration rules and verify the method and the rounding are defined.
2. Change a proration rule (the new method, the new rounding, the time).
3. Verify the change is recorded and auditable.
**Expected Result:** The proration rules are defined (the method, the rounding) — a rule change is recorded and auditable.
**Priority:** High

### TC-SA-12-04-005 — Price application: the price applied (the added subject is the prorated price)
**Type:** Positive
**Covers:** 4.1 → Price application: the price applied (the added subject is the prorated price)
**Preconditions:** A learner adds a subject mid-subscription.
**Steps:**
1. As the learner, add the subject.
2. Verify the price charged is the prorated price (the remaining-period proration applied).
3. Verify the subject is added and the access starts immediately.
**Expected Result:** The price is applied — the added subject is the prorated price.
**Priority:** Critical

### TC-SA-12-04-006 — Price record: the price recorded (the learner, the subject, the remaining period, the prorated price); the record is the proof
**Type:** Positive
**Covers:** 4.1 → Price record: the price recorded (the learner, the subject, the remaining period, the prorated price)
**Preconditions:** A subject has been added mid-subscription.
**Steps:**
1. Open the price record.
2. Verify it shows the learner, the subject, the remaining period, and the prorated price.
**Expected Result:** The price is recorded — the learner, the subject, the remaining period, and the prorated price are shown.
**Priority:** High

### TC-SA-12-04-007 — Proration rules and applications are audit-logged with the learner, subject, and timestamp
**Type:** Positive
**Covers:** 4.1 → Audit logging of the proration rules and the applications; Rule: proration rules and applications are audit-logged with the learner, subject, and timestamp
**Preconditions:** Proration rule and application events have occurred.
**Steps:**
1. Open the audit trail and filter by "proration".
2. Verify entries show the learner, the subject, and the timestamp.
**Expected Result:** The proration rules and applications are audit-logged with the learner, subject, and timestamp.
**Priority:** Critical

### TC-SA-12-04-008 — The proration rules are visible (the method, the rounding); the upgrade pricing is managed
**Type:** Positive
**Covers:** 4.1 → Rule: the proration rules are visible (the method, the rounding); the upgrade pricing is managed
**Preconditions:** The proration rules are defined.
**Steps:**
1. Open the proration rules view.
2. Verify the method and the rounding are visible.
3. Verify the upgrade pricing is managed.
**Expected Result:** The proration rules are visible — the method and the rounding are shown.
**Priority:** Medium

## 4.2 Upgrade from Single to Multiple Subjects

### TC-SA-12-04-009 — Upgrade method: the method (the difference pricing, the proration); the method is the fairness
**Type:** Positive
**Covers:** 4.2 → Upgrade method: the method (the difference pricing, the proration); Rule: the upgrade method is the difference pricing (the proration); the method is the fairness
**Preconditions:** The Super Admin opens the flexible upgrade pricing.
**Steps:**
1. Open the upgrade method.
2. Verify the method is the difference pricing (the proration).
3. Verify the method is the fairness (the learner pays the difference, not the full price).
**Expected Result:** The upgrade method is the difference pricing (the proration) — the method is the fairness.
**Priority:** Critical

### TC-SA-12-04-010 — Upgrade scope: the scope (the single-subject to the multi-subject, the remaining period); the scope is the upgrade
**Type:** Positive
**Covers:** 4.2 → Upgrade scope: the scope (the single-subject to the multi-subject, the remaining period); Rule: the upgrade scope is the single-subject to the multi-subject and the remaining period; the scope is the upgrade
**Preconditions:** A learner has an active single-subject subscription with a remaining period.
**Steps:**
1. Open the upgrade scope.
2. Verify the scope is the single-subject to the multi-subject and the remaining period.
3. Verify the scope is the upgrade.
**Expected Result:** The upgrade scope is the single-subject to the multi-subject and the remaining period — the scope is the upgrade.
**Priority:** High

### TC-SA-12-04-011 — Upgrade calculation: the calculation (the multi-subject price, the single-subject price, the difference, the proration); the calculation is the price
**Type:** Positive
**Covers:** 4.2 → Upgrade calculation: the calculation (the multi-subject price, the single-subject price, the difference, the proration); Rule: the upgrade calculation is explicit (the multi-subject price, the single-subject price, the difference, the proration); the calculation is the price
**Preconditions:** A learner upgrades from single to multiple subjects mid-subscription.
**Steps:**
1. Open the upgrade calculation.
2. Verify it shows the multi-subject price, the single-subject price, the difference, and the proration.
3. Verify the difference = the multi-subject price − the single-subject price (the calculation is explicit).
**Expected Result:** The upgrade calculation is explicit — the multi-subject price, the single-subject price, the difference, and the proration are shown and correct.
**Priority:** Critical

### TC-SA-12-04-012 — Rule definition: the rules (the method, the proration); a rule change is recorded and auditable
**Type:** Positive
**Covers:** 4.2 → Rule definition: the rules (the method, the proration); Rule: a rule change (an upgrade rule updated) is recorded (the new method, the new proration, the time); it is auditable
**Preconditions:** The upgrade rules are defined (the method, the proration).
**Steps:**
1. Open the upgrade rules and verify the method and the proration are defined.
2. Change an upgrade rule (the new method, the new proration, the time).
3. Verify the change is recorded and auditable.
**Expected Result:** The upgrade rules are defined (the method, the proration) — a rule change is recorded and auditable.
**Priority:** High

### TC-SA-12-04-013 — Price application: the price applied (the upgrade is the difference price)
**Type:** Positive
**Covers:** 4.2 → Price application: the price applied (the upgrade is the difference price)
**Preconditions:** A learner upgrades from single to multiple subjects.
**Steps:**
1. As the learner, upgrade to the multi-subject plan.
2. Verify the price charged is the difference price (the difference pricing applied, prorated for the remaining period).
3. Verify the multi-subject access is granted.
**Expected Result:** The price is applied — the upgrade is the difference price.
**Priority:** Critical

### TC-SA-12-04-014 — Price record: the price recorded (the learner, the upgrade, the difference, the prorated price); the record is the proof
**Type:** Positive
**Covers:** 4.2 → Price record: the price recorded (the learner, the upgrade, the difference, the prorated price)
**Preconditions:** An upgrade from single to multiple subjects has occurred.
**Steps:**
1. Open the price record.
2. Verify it shows the learner, the upgrade, the difference, and the prorated price.
**Expected Result:** The price is recorded — the learner, the upgrade, the difference, and the prorated price are shown.
**Priority:** High

### TC-SA-12-04-015 — Upgrade rules and applications are audit-logged with the learner, upgrade, and timestamp
**Type:** Positive
**Covers:** 4.2 → Audit logging of the upgrade rules and the applications; Rule: upgrade rules and applications are audit-logged with the learner, upgrade, and timestamp
**Preconditions:** Upgrade rule and application events have occurred.
**Steps:**
1. Open the audit trail and filter by "upgrade".
2. Verify entries show the learner, the upgrade, and the timestamp.
**Expected Result:** The upgrade rules and applications are audit-logged with the learner, upgrade, and timestamp.
**Priority:** Critical

### TC-SA-12-04-016 — The upgrade rules are visible (the method, the proration); the upgrade pricing is managed
**Type:** Positive
**Covers:** 4.2 → Rule: the upgrade rules are visible (the method, the proration); the upgrade pricing is managed
**Preconditions:** The upgrade rules are defined.
**Steps:**
1. Open the upgrade rules view.
2. Verify the method and the proration are visible.
3. Verify the upgrade pricing is managed.
**Expected Result:** The upgrade rules are visible — the method and the proration are shown.
**Priority:** Medium

## 4.3 Upgrade from One Grade to Another

### TC-SA-12-04-017 — Grade-upgrade method: the method (the difference pricing, the proration); the method is the fairness
**Type:** Positive
**Covers:** 4.3 → Grade-upgrade method: the method (the difference pricing, the proration); Rule: the grade-upgrade method is the difference pricing (the proration); the method is the fairness
**Preconditions:** The Super Admin opens the flexible upgrade pricing.
**Steps:**
1. Open the grade-upgrade method.
2. Verify the method is the difference pricing (the proration).
3. Verify the method is the fairness (the learner pays the difference, not the full price).
**Expected Result:** The grade-upgrade method is the difference pricing (the proration) — the method is the fairness.
**Priority:** Critical

### TC-SA-12-04-018 — Grade-upgrade scope: the scope (the old grade to the new grade, the remaining period); the scope is the grade upgrade
**Type:** Positive
**Covers:** 4.3 → Grade-upgrade scope: the scope (the old grade to the new grade, the remaining period); Rule: the grade-upgrade scope is the old grade to the new grade and the remaining period; the scope is the grade upgrade
**Preconditions:** A learner has an active grade subscription with a remaining period (e.g., grade 10).
**Steps:**
1. Open the grade-upgrade scope.
2. Verify the scope is the old grade to the new grade (e.g., grade 10 → grade 11) and the remaining period.
3. Verify the scope is the grade upgrade.
**Expected Result:** The grade-upgrade scope is the old grade to the new grade and the remaining period — the scope is the grade upgrade.
**Priority:** High

### TC-SA-12-04-019 — Grade-upgrade calculation: the calculation (the new grade's price, the old grade's price, the difference, the proration); the calculation is the price
**Type:** Positive
**Covers:** 4.3 → Grade-upgrade calculation: the calculation (the new grade's price, the old grade's price, the difference, the proration); Rule: the grade-upgrade calculation is explicit (the new grade's price, the old grade's price, the difference, the proration); the calculation is the price
**Preconditions:** A learner upgrades from one grade to another mid-subscription (e.g., grade 10 → grade 11).
**Steps:**
1. Open the grade-upgrade calculation.
2. Verify it shows the new grade's price, the old grade's price, the difference, and the proration.
3. Verify the difference = the new grade's price − the old grade's price (the calculation is explicit).
**Expected Result:** The grade-upgrade calculation is explicit — the new grade's price, the old grade's price, the difference, and the proration are shown and correct.
**Priority:** Critical

### TC-SA-12-04-020 — Rule definition: the rules (the method, the proration); a rule change is recorded and auditable
**Type:** Positive
**Covers:** 4.3 → Rule definition: the rules (the method, the proration); Rule: a rule change (a grade-upgrade rule updated) is recorded (the new method, the new proration, the time); it is auditable
**Preconditions:** The grade-upgrade rules are defined (the method, the proration).
**Steps:**
1. Open the grade-upgrade rules and verify the method and the proration are defined.
2. Change a grade-upgrade rule (the new method, the new proration, the time).
3. Verify the change is recorded and auditable.
**Expected Result:** The grade-upgrade rules are defined (the method, the proration) — a rule change is recorded and auditable.
**Priority:** High

### TC-SA-12-04-021 — Price application: the price applied (the grade upgrade is the difference price)
**Type:** Positive
**Covers:** 4.3 → Price application: the price applied (the grade upgrade is the difference price)
**Preconditions:** A learner upgrades from one grade to another.
**Steps:**
1. As the learner, upgrade to the new grade.
2. Verify the price charged is the difference price (the difference pricing applied, prorated for the remaining period).
3. Verify the new grade's access is granted.
**Expected Result:** The price is applied — the grade upgrade is the difference price.
**Priority:** Critical

### TC-SA-12-04-022 — Price record: the price recorded (the learner, the grade upgrade, the difference, the prorated price); the record is the proof
**Type:** Positive
**Covers:** 4.3 → Price record: the price recorded (the learner, the grade upgrade, the difference, the prorated price)
**Preconditions:** A grade upgrade has occurred.
**Steps:**
1. Open the price record.
2. Verify it shows the learner, the grade upgrade, the difference, and the prorated price.
**Expected Result:** The price is recorded — the learner, the grade upgrade, the difference, and the prorated price are shown.
**Priority:** High

### TC-SA-12-04-023 — Grade-upgrade rules and applications are audit-logged with the learner, grade upgrade, and timestamp
**Type:** Positive
**Covers:** 4.3 → Audit logging of the grade-upgrade rules and the applications; Rule: grade-upgrade rules and applications are audit-logged with the learner, grade upgrade, and timestamp
**Preconditions:** Grade-upgrade rule and application events have occurred.
**Steps:**
1. Open the audit trail and filter by "grade upgrade".
2. Verify entries show the learner, the grade upgrade, and the timestamp.
**Expected Result:** The grade-upgrade rules and applications are audit-logged with the learner, grade upgrade, and timestamp.
**Priority:** Critical

### TC-SA-12-04-024 — The grade-upgrade rules are visible (the method, the proration); the grade-upgrade pricing is managed
**Type:** Positive
**Covers:** 4.3 → Rule: the grade-upgrade rules are visible (the method, the proration); the grade-upgrade pricing is managed
**Preconditions:** The grade-upgrade rules are defined.
**Steps:**
1. Open the grade-upgrade rules view.
2. Verify the method and the proration are visible.
3. Verify the grade-upgrade pricing is managed.
**Expected Result:** The grade-upgrade rules are visible — the method and the proration are shown.
**Priority:** Medium

## 4.4 Transfer Unused Duration to New Subscription

### TC-SA-12-04-025 — Transfer method: the method (the unused-duration transfer, the duration calculation); the method is the fairness
**Type:** Positive
**Covers:** 4.4 → Transfer method: the method (the unused-duration transfer, the duration calculation); Rule: the transfer method is the unused-duration transfer (the duration calculation); the method is the fairness
**Preconditions:** The Super Admin opens the flexible upgrade pricing.
**Steps:**
1. Open the transfer method.
2. Verify the method is the unused-duration transfer (the duration calculation).
3. Verify the method is the fairness (the learner keeps the unused duration).
**Expected Result:** The transfer method is the unused-duration transfer (the duration calculation) — the method is the fairness.
**Priority:** Critical

### TC-SA-12-04-026 — Transfer scope: the scope (the old subscription's unused duration, the new subscription); the scope is the transfer
**Type:** Positive
**Covers:** 4.4 → Transfer scope: the scope (the old subscription's unused duration, the new subscription); Rule: the transfer scope is the old subscription's unused duration and the new subscription; the scope is the transfer
**Preconditions:** A learner has an old subscription with unused duration and a new subscription.
**Steps:**
1. Open the transfer scope.
2. Verify the scope is the old subscription's unused duration and the new subscription.
3. Verify the scope is the transfer.
**Expected Result:** The transfer scope is the old subscription's unused duration and the new subscription — the scope is the transfer.
**Priority:** High

### TC-SA-12-04-027 — Transfer calculation: the calculation (the unused duration, the transfer to the new subscription); the calculation is the transfer
**Type:** Positive
**Covers:** 4.4 → Transfer calculation: the calculation (the unused duration, the transfer to the new subscription); Rule: the transfer calculation is explicit (the unused duration, the transfer to the new subscription); the calculation is the transfer
**Preconditions:** A learner transfers unused duration to a new subscription.
**Steps:**
1. Open the transfer calculation.
2. Verify it shows the unused duration and the transfer to the new subscription.
3. Verify the new subscription's end date = the new subscription's start + the transferred unused duration (the calculation is explicit).
**Expected Result:** The transfer calculation is explicit — the unused duration and the transfer to the new subscription are shown and correct.
**Priority:** Critical

### TC-SA-12-04-028 — Rule definition: the rules (the method, the calculation); a rule change is recorded and auditable
**Type:** Positive
**Covers:** 4.4 → Rule definition: the rules (the method, the calculation); Rule: a rule change (a transfer rule updated) is recorded (the new method, the new calculation, the time); it is auditable
**Preconditions:** The transfer rules are defined (the method, the calculation).
**Steps:**
1. Open the transfer rules and verify the method and the calculation are defined.
2. Change a transfer rule (the new method, the new calculation, the time).
3. Verify the change is recorded and auditable.
**Expected Result:** The transfer rules are defined (the method, the calculation) — a rule change is recorded and auditable.
**Priority:** High

### TC-SA-12-04-029 — Transfer application: the transfer applied (the unused duration is transferred to the new subscription)
**Type:** Positive
**Covers:** 4.4 → Transfer application: the transfer applied (the unused duration is transferred to the new subscription)
**Preconditions:** A learner transfers unused duration to a new subscription.
**Steps:**
1. As the learner, transfer the unused duration to the new subscription.
2. Verify the unused duration is transferred to the new subscription.
3. Verify the new subscription's duration is extended by the transferred unused duration.
**Expected Result:** The transfer is applied — the unused duration is transferred to the new subscription.
**Priority:** Critical

### TC-SA-12-04-030 — Transfer record: the transfer recorded (the learner, the old subscription, the unused duration, the new subscription); the record is the proof
**Type:** Positive
**Covers:** 4.4 → Transfer record: the transfer recorded (the learner, the old subscription, the unused duration, the new subscription)
**Preconditions:** A duration transfer has occurred.
**Steps:**
1. Open the transfer record.
2. Verify it shows the learner, the old subscription, the unused duration, and the new subscription.
**Expected Result:** The transfer is recorded — the learner, the old subscription, the unused duration, and the new subscription are shown.
**Priority:** High

### TC-SA-12-04-031 — Transfer rules and applications are audit-logged with the learner, old subscription, and timestamp
**Type:** Positive
**Covers:** 4.4 → Audit logging of the transfer rules and the applications; Rule: transfer rules and applications are audit-logged with the learner, old subscription, and timestamp
**Preconditions:** Transfer rule and application events have occurred.
**Steps:**
1. Open the audit trail and filter by "duration transfer".
2. Verify entries show the learner, the old subscription, and the timestamp.
**Expected Result:** The transfer rules and applications are audit-logged with the learner, old subscription, and timestamp.
**Priority:** Critical

### TC-SA-12-04-032 — The transfer rules are visible (the method, the calculation); the duration transfer is managed
**Type:** Positive
**Covers:** 4.4 → Rule: the transfer rules are visible (the method, the calculation); the duration transfer is managed
**Preconditions:** The transfer rules are defined.
**Steps:**
1. Open the transfer rules view.
2. Verify the method and the calculation are visible.
3. Verify the duration transfer is managed.
**Expected Result:** The transfer rules are visible — the method and the calculation are shown.
**Priority:** Medium
