# 2. License Pool Management — Test Cases

User Type: **Training Institute**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: license_pool_management.md — every feature, sub-feature, and rule covered

## Test Execution Policy

- Zero tolerance: any deviation from the documented behavior is a defect.
- Every failed test is logged with a Bug ID, the feature, the sub-feature, the expected vs actual result, and the severity; 100% of bugs are fixed before the group passes.
- 100% pass rate is required for the group to be marked complete.

## Coverage Matrix

| Feature | Sub-feature / Rule | Test IDs |
|---------|--------------------|----------|
| 2.1 | License pool overview | TC-TI-3-02-001 |
| 2.1 | Total, assigned, and unassigned counts | TC-TI-3-02-002 |
| 2.1 | Licenses by tier and term | TC-TI-3-02-003 |
| 2.1 | Filter by tier or status | TC-TI-3-02-004 |
| 2.1 | Pool updated in real time | TC-TI-3-02-005 |
| 2.1 | Pool available on web and mobile | TC-TI-3-02-006 |
| 2.1 | Pool event logging (viewed) | TC-TI-3-02-007 |
| 2.1 | Audit logging of the license pool overview | TC-TI-3-02-008 |
| 2.1 | Rule: The pool is updated in real time on assignment and release. | TC-TI-3-02-001 |
| 2.1 | Rule: The unassigned count equals total minus assigned. | TC-TI-3-02-002 |
| 2.1 | Rule: Pool events (viewed) are logged with the account and the timestamp. | TC-TI-3-02-003 |
| 2.1 | Rule: The license pool overview is audit-logged with the account and the timestamp. | TC-TI-3-02-004 |
| 2.2 | Assign a license to a student | TC-TI-3-02-009 |
| 2.2 | Bulk license assignment | TC-TI-3-02-010 |
| 2.2 | Student gains access immediately | TC-TI-3-02-011 |
| 2.2 | Assignment confirmation shown | TC-TI-3-02-012 |
| 2.2 | Reassign a license to another student | TC-TI-3-02-013 |
| 2.2 | Assignment available on web and mobile | TC-TI-3-02-014 |
| 2.2 | Assignment event logging (assigned, reassigned) | TC-TI-3-02-015 |
| 2.2 | Audit logging of the license assignment to students | TC-TI-3-02-016 |
| 2.2 | Rule: A student can hold only one active license at a time. | TC-TI-3-02-009 |
| 2.2 | Rule: A reassignment revokes the previous student's access. | TC-TI-3-02-010 |
| 2.2 | Rule: Assignment events (assigned, reassigned) are logged with the account and the timestamp. | TC-TI-3-02-011 |
| 2.2 | Rule: The license assignment to students is audit-logged with the account and the timestamp. | TC-TI-3-02-012 |
| 2.3 | Release a license from a student | TC-TI-3-02-017 |
| 2.3 | Bulk license reclamation | TC-TI-3-02-018 |
| 2.3 | License returned to the unassigned pool | TC-TI-3-02-019 |
| 2.3 | Student access revoked on release | TC-TI-3-02-020 |
| 2.3 | Release confirmation shown | TC-TI-3-02-021 |
| 2.3 | Release available on web and mobile | TC-TI-3-02-022 |
| 2.3 | Release event logging (released, reclaimed) | TC-TI-3-02-023 |
| 2.3 | Audit logging of the license release and reclamation | TC-TI-3-02-024 |
| 2.3 | Rule: The student access is revoked immediately on release. | TC-TI-3-02-017 |
| 2.3 | Rule: A released license returns to the unassigned pool. | TC-TI-3-02-018 |
| 2.3 | Rule: Release events (released, reclaimed) are logged with the account and the timestamp. | TC-TI-3-02-019 |
| 2.3 | Rule: The license release and reclamation is audit-logged with the account and the timestamp. | TC-TI-3-02-020 |

## 2.1 License Pool Overview

### TC-TI-3-02-001 — License pool overview
**Type:** Positive
**Covers:** 2.1 → License pool overview; Rule: The pool is updated in real time on assignment and release.
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, set up the precondition and perform: License pool overview.
2. Observe the result and verify the full behavior: License pool overview.
**Expected Result:** License pool overview — delivered exactly as documented.
**Priority:** Critical

### TC-TI-3-02-002 — Total, assigned, and unassigned counts
**Type:** Positive
**Covers:** 2.1 → Total, assigned, and unassigned counts; Rule: The unassigned count equals total minus assigned.
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, set up the precondition and perform: Total, assigned, and unassigned counts.
2. Observe the result and verify the full behavior: Total, assigned, and unassigned counts.
**Expected Result:** Total, assigned, and unassigned counts — delivered exactly as documented.
**Priority:** High

### TC-TI-3-02-003 — Licenses by tier and term
**Type:** Positive
**Covers:** 2.1 → Licenses by tier and term; Rule: Pool events (viewed) are logged with the account and the timestamp.
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, set up the precondition and perform: Licenses by tier and term.
2. Observe the result and verify the full behavior: Licenses by tier and term.
**Expected Result:** Licenses by tier and term — delivered exactly as documented.
**Priority:** High

### TC-TI-3-02-004 — Filter by tier or status
**Type:** Positive
**Covers:** 2.1 → Filter by tier or status; Rule: The license pool overview is audit-logged with the account and the timestamp.
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, set up the precondition and perform: Filter by tier or status.
2. Observe the result and verify the full behavior: Filter by tier or status.
**Expected Result:** Filter by tier or status — delivered exactly as documented.
**Priority:** High

### TC-TI-3-02-005 — Pool updated in real time
**Type:** Positive
**Covers:** 2.1 → Pool updated in real time
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, set up the precondition and perform: Pool updated in real time.
2. Observe the result and verify the full behavior: Pool updated in real time.
**Expected Result:** Pool updated in real time — delivered exactly as documented.
**Priority:** High

### TC-TI-3-02-006 — Pool available on web and mobile
**Type:** Positive
**Covers:** 2.1 → Pool available on web and mobile
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, set up the precondition and perform: Pool available on web and mobile.
2. Observe the result and verify the full behavior: Pool available on web and mobile.
**Expected Result:** Pool available on web and mobile — delivered exactly as documented.
**Priority:** High

### TC-TI-3-02-007 — Pool event logging (viewed)
**Type:** Positive
**Covers:** 2.1 → Pool event logging (viewed)
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, set up the precondition and perform: Pool event logging (viewed).
2. Observe the result and verify the full behavior: Pool event logging (viewed).
**Expected Result:** Pool event logging (viewed) — delivered exactly as documented.
**Priority:** High

### TC-TI-3-02-008 — Audit logging of the license pool overview
**Type:** Positive
**Covers:** 2.1 → Audit logging of the license pool overview
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, perform the license pool overview action.
2. Open the audit log and verify the entry for the action.
**Expected Result:** The license pool overview action is recorded in the audit log with the account and the timestamp.
**Priority:** Critical


## 2.2 License Assignment to Students

### TC-TI-3-02-009 — Assign a license to a student
**Type:** Positive
**Covers:** 2.2 → Assign a license to a student; Rule: A student can hold only one active license at a time.
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, set up the precondition and perform: Assign a license to a student.
2. Observe the result and verify the full behavior: Assign a license to a student.
**Expected Result:** Assign a license to a student — delivered exactly as documented.
**Priority:** Critical

### TC-TI-3-02-010 — Bulk license assignment
**Type:** Positive
**Covers:** 2.2 → Bulk license assignment; Rule: A reassignment revokes the previous student's access.
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, set up the precondition and perform: Bulk license assignment.
2. Observe the result and verify the full behavior: Bulk license assignment.
**Expected Result:** Bulk license assignment — delivered exactly as documented.
**Priority:** High

### TC-TI-3-02-011 — Student gains access immediately
**Type:** Positive
**Covers:** 2.2 → Student gains access immediately; Rule: Assignment events (assigned, reassigned) are logged with the account and the timestamp.
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, set up the precondition and perform: Student gains access immediately.
2. Observe the result and verify the full behavior: Student gains access immediately.
**Expected Result:** Student gains access immediately — delivered exactly as documented.
**Priority:** High

### TC-TI-3-02-012 — Assignment confirmation shown
**Type:** Positive
**Covers:** 2.2 → Assignment confirmation shown; Rule: The license assignment to students is audit-logged with the account and the timestamp.
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, set up the precondition and perform: Assignment confirmation shown.
2. Observe the result and verify the full behavior: Assignment confirmation shown.
**Expected Result:** Assignment confirmation shown — delivered exactly as documented.
**Priority:** High

### TC-TI-3-02-013 — Reassign a license to another student
**Type:** Positive
**Covers:** 2.2 → Reassign a license to another student
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, set up the precondition and perform: Reassign a license to another student.
2. Observe the result and verify the full behavior: Reassign a license to another student.
**Expected Result:** Reassign a license to another student — delivered exactly as documented.
**Priority:** High

### TC-TI-3-02-014 — Assignment available on web and mobile
**Type:** Positive
**Covers:** 2.2 → Assignment available on web and mobile
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, set up the precondition and perform: Assignment available on web and mobile.
2. Observe the result and verify the full behavior: Assignment available on web and mobile.
**Expected Result:** Assignment available on web and mobile — delivered exactly as documented.
**Priority:** High

### TC-TI-3-02-015 — Assignment event logging (assigned, reassigned)
**Type:** Positive
**Covers:** 2.2 → Assignment event logging (assigned, reassigned)
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, set up the precondition and perform: Assignment event logging (assigned, reassigned).
2. Observe the result and verify the full behavior: Assignment event logging (assigned, reassigned).
**Expected Result:** Assignment event logging (assigned, reassigned) — delivered exactly as documented.
**Priority:** High

### TC-TI-3-02-016 — Audit logging of the license assignment to students
**Type:** Positive
**Covers:** 2.2 → Audit logging of the license assignment to students
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, perform the license assignment to students action.
2. Open the audit log and verify the entry for the action.
**Expected Result:** The license assignment to students action is recorded in the audit log with the account and the timestamp.
**Priority:** Critical


## 2.3 License Release & Reclamation

### TC-TI-3-02-017 — Release a license from a student
**Type:** Positive
**Covers:** 2.3 → Release a license from a student; Rule: The student access is revoked immediately on release.
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, set up the precondition and perform: Release a license from a student.
2. Observe the result and verify the full behavior: Release a license from a student.
**Expected Result:** Release a license from a student — delivered exactly as documented.
**Priority:** Critical

### TC-TI-3-02-018 — Bulk license reclamation
**Type:** Positive
**Covers:** 2.3 → Bulk license reclamation; Rule: A released license returns to the unassigned pool.
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, set up the precondition and perform: Bulk license reclamation.
2. Observe the result and verify the full behavior: Bulk license reclamation.
**Expected Result:** Bulk license reclamation — delivered exactly as documented.
**Priority:** High

### TC-TI-3-02-019 — License returned to the unassigned pool
**Type:** Positive
**Covers:** 2.3 → License returned to the unassigned pool; Rule: Release events (released, reclaimed) are logged with the account and the timestamp.
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, set up the precondition and perform: License returned to the unassigned pool.
2. Observe the result and verify the full behavior: License returned to the unassigned pool.
**Expected Result:** License returned to the unassigned pool — delivered exactly as documented.
**Priority:** High

### TC-TI-3-02-020 — Student access revoked on release
**Type:** Positive
**Covers:** 2.3 → Student access revoked on release; Rule: The license release and reclamation is audit-logged with the account and the timestamp.
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, set up the precondition and perform: Student access revoked on release.
2. Observe the result and verify the full behavior: Student access revoked on release.
**Expected Result:** Student access revoked on release — delivered exactly as documented.
**Priority:** High

### TC-TI-3-02-021 — Release confirmation shown
**Type:** Positive
**Covers:** 2.3 → Release confirmation shown
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, set up the precondition and perform: Release confirmation shown.
2. Observe the result and verify the full behavior: Release confirmation shown.
**Expected Result:** Release confirmation shown — delivered exactly as documented.
**Priority:** High

### TC-TI-3-02-022 — Release available on web and mobile
**Type:** Positive
**Covers:** 2.3 → Release available on web and mobile
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, set up the precondition and perform: Release available on web and mobile.
2. Observe the result and verify the full behavior: Release available on web and mobile.
**Expected Result:** Release available on web and mobile — delivered exactly as documented.
**Priority:** High

### TC-TI-3-02-023 — Release event logging (released, reclaimed)
**Type:** Positive
**Covers:** 2.3 → Release event logging (released, reclaimed)
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, set up the precondition and perform: Release event logging (released, reclaimed).
2. Observe the result and verify the full behavior: Release event logging (released, reclaimed).
**Expected Result:** Release event logging (released, reclaimed) — delivered exactly as documented.
**Priority:** High

### TC-TI-3-02-024 — Audit logging of the license release and reclamation
**Type:** Positive
**Covers:** 2.3 → Audit logging of the license release and reclamation
**Preconditions:** A Training Institute account is active and the Training Institute is in the state required for this behavior.
**Steps:**
1. As a Training Institute, perform the license release and reclamation action.
2. Open the audit log and verify the entry for the action.
**Expected Result:** The license release and reclamation action is recorded in the audit log with the account and the timestamp.
**Priority:** Critical
