# 3.2 Seat Allocation — Test Cases

User Type: **Corporate**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: seat_allocation.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 |
|---------|--------------------|----------|
| 3.2.1 | Total / allocated / available seat counts | TC-COR-3-02-001 |
| 3.2.1 | Expiring seats list | TC-COR-3-02-002 |
| 3.2.1 | Seat utilization percentage | TC-COR-3-02-003 |
| 3.2.1 | Low-seat threshold indicator | TC-COR-3-02-004 |
| 3.2.1 | Available on web and mobile | TC-COR-3-02-005 |
| 3.2.1 | Event logging (viewed) | TC-COR-3-02-006 |
| 3.2.1 | Audit logging of the seat pool overview | TC-COR-3-02-007 |
| 3.2.1 | Rule: Utilization = allocated / total × 100. | TC-COR-3-02-008 |
| 3.2.1 | Rule: The low-seat threshold defaults to 10% of the pool. | TC-COR-3-02-009 |
| 3.2.1 | Rule: Events (viewed) are logged with the account and the timestamp. | TC-COR-3-02-010 |
| 3.2.1 | Rule: The seat pool overview is audit-logged with the account and the timestamp. | TC-COR-3-02-011 |
| 3.2.2 | Assign a seat to an employee | TC-COR-3-02-012 |
| 3.2.2 | Revoke a seat from an employee | TC-COR-3-02-013 |
| 3.2.2 | Immediate access deactivation on revocation | TC-COR-3-02-014 |
| 3.2.2 | Seat transfer between employees | TC-COR-3-02-015 |
| 3.2.2 | Available on web and mobile | TC-COR-3-02-016 |
| 3.2.2 | Assignment event logging (viewed) | TC-COR-3-02-017 |
| 3.2.2 | Audit logging of the seat assignment & revocation | TC-COR-3-02-018 |
| 3.2.2 | Rule: One seat per employee at a time. | TC-COR-3-02-019 |
| 3.2.2 | Rule: Revocation deactivates access within 1 minute. | TC-COR-3-02-020 |
| 3.2.2 | Rule: Completed learning records are retained after revocation. | TC-COR-3-02-021 |
| 3.2.2 | Rule: Events (viewed) are logged with the account and the timestamp. | TC-COR-3-02-022 |
| 3.2.2 | Rule: The seat assignment & revocation is audit-logged with the account and the timestamp. | TC-COR-3-02-023 |
| 3.2.3 | Seat expiry dates | TC-COR-3-02-024 |
| 3.2.3 | Expiring seats alert | TC-COR-3-02-025 |
| 3.2.3 | Bulk renewal of seats | TC-COR-3-02-026 |
| 3.2.3 | Release instead of renew | TC-COR-3-02-027 |
| 3.2.3 | Available on web and mobile | TC-COR-3-02-028 |
| 3.2.3 | Event logging (viewed) | TC-COR-3-02-029 |
| 3.2.3 | Audit logging of the seat expiry & renewal | TC-COR-3-02-030 |
| 3.2.3 | Rule: Unrenewed seats deactivate at the end of the billing cycle. | TC-COR-3-02-031 |
| 3.2.3 | Rule: Renewal is billed on the next invoice, not immediately. | TC-COR-3-02-032 |
| 3.2.3 | Rule: Events (viewed) are logged with the account and the timestamp. | TC-COR-3-02-033 |
| 3.2.3 | Rule: The seat expiry & renewal is audit-logged with the account and the timestamp. | TC-COR-3-02-034 |


## 3.2.1 Seat Pool Overview

### TC-COR-3-02-001 — Total / allocated / available seat counts

**Type:** Positive

**Covers:** 3.2.1 → Total / allocated / available seat counts; Rule: Utilization = allocated / total × 100.

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Total / allocated / available seat counts.

2. Observe the result and verify the full behavior: Total / allocated / available seat counts.

**Expected Result:** Total / allocated / available seat counts — delivered exactly as documented.

**Priority:** Critical

### TC-COR-3-02-002 — Expiring seats list

**Type:** Positive

**Covers:** 3.2.1 → Expiring seats list; Rule: Utilization = allocated / total × 100.

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Expiring seats list.

2. Observe the result and verify the full behavior: Expiring seats list.

**Expected Result:** Expiring seats list — delivered exactly as documented.

**Priority:** Critical

### TC-COR-3-02-003 — Seat utilization percentage

**Type:** Positive

**Covers:** 3.2.1 → Seat utilization percentage; Rule: Utilization = allocated / total × 100.

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Seat utilization percentage.

2. Observe the result and verify the full behavior: Seat utilization percentage.

**Expected Result:** Seat utilization percentage — delivered exactly as documented.

**Priority:** Critical

### TC-COR-3-02-004 — Low-seat threshold indicator

**Type:** Positive

**Covers:** 3.2.1 → Low-seat threshold indicator; Rule: Utilization = allocated / total × 100.

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Low-seat threshold indicator.

2. Observe the result and verify the full behavior: Low-seat threshold indicator.

**Expected Result:** Low-seat threshold indicator — delivered exactly as documented.

**Priority:** Critical

### TC-COR-3-02-005 — Available on web and mobile

**Type:** Positive

**Covers:** 3.2.1 → Available on web and mobile; Rule: Utilization = allocated / total × 100.

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Available on web and mobile.

2. Observe the result and verify the full behavior: Available on web and mobile.

**Expected Result:** Available on web and mobile — delivered exactly as documented.

**Priority:** Critical

### TC-COR-3-02-006 — Event logging (viewed)

**Type:** Positive

**Covers:** 3.2.1 → Event logging (viewed); Rule: Utilization = allocated / total × 100.

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Event logging (viewed).

2. Observe the result and verify the full behavior: Event logging (viewed).

**Expected Result:** Event logging (viewed) — delivered exactly as documented.

**Priority:** Medium

### TC-COR-3-02-007 — Audit logging of the seat pool overview

**Type:** Positive

**Covers:** 3.2.1 → Audit logging of the seat pool overview; Rule: Utilization = allocated / total × 100.

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Audit logging of the seat pool overview.

2. Observe the result and verify the full behavior: Audit logging of the seat pool overview.

**Expected Result:** Audit logging of the seat pool overview — delivered exactly as documented.

**Priority:** Medium

### TC-COR-3-02-008 — Rule: Utilization = allocated / total × 100.

**Type:** Positive

**Covers:** 3.2.1 → Utilization = allocated / total × 100.; Rule: Utilization = allocated / total × 100..

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Utilization = allocated / total × 100..

2. Observe the result and verify the full behavior: Utilization = allocated / total × 100..

**Expected Result:** Utilization = allocated / total × 100. — delivered exactly as documented.

**Priority:** High

### TC-COR-3-02-009 — Rule: The low-seat threshold defaults to 10% of the pool.

**Type:** Positive

**Covers:** 3.2.1 → The low-seat threshold defaults to 10% of the pool.; Rule: The low-seat threshold defaults to 10% of the pool..

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: The low-seat threshold defaults to 10% of the pool..

2. Observe the result and verify the full behavior: The low-seat threshold defaults to 10% of the pool..

**Expected Result:** The low-seat threshold defaults to 10% of the pool. — delivered exactly as documented.

**Priority:** High

### TC-COR-3-02-010 — Rule: Events (viewed) are logged with the account and the timestamp.

**Type:** Positive

**Covers:** 3.2.1 → Events (viewed) are logged with the account and the timestamp.; Rule: Events (viewed) are logged with the account and the timestamp..

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Events (viewed) are logged with the account and the timestamp..

2. Observe the result and verify the full behavior: Events (viewed) are logged with the account and the timestamp..

**Expected Result:** Events (viewed) are logged with the account and the timestamp. — delivered exactly as documented.

**Priority:** High

### TC-COR-3-02-011 — Rule: The seat pool overview is audit-logged with the account and the timestamp.

**Type:** Positive

**Covers:** 3.2.1 → The seat pool overview is audit-logged with the account and the timestamp.; Rule: The seat pool overview is audit-logged with the account and the timestamp..

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: The seat pool overview is audit-logged with the account and the timestamp..

2. Observe the result and verify the full behavior: The seat pool overview is audit-logged with the account and the timestamp..

**Expected Result:** The seat pool overview is audit-logged with the account and the timestamp. — delivered exactly as documented.

**Priority:** High


## 3.2.2 Assign & Revoke Seats

### TC-COR-3-02-012 — Assign a seat to an employee

**Type:** Positive

**Covers:** 3.2.2 → Assign a seat to an employee; Rule: One seat per employee at a time.

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Assign a seat to an employee.

2. Observe the result and verify the full behavior: Assign a seat to an employee.

**Expected Result:** Assign a seat to an employee — delivered exactly as documented.

**Priority:** Critical

### TC-COR-3-02-013 — Revoke a seat from an employee

**Type:** Positive

**Covers:** 3.2.2 → Revoke a seat from an employee; Rule: One seat per employee at a time.

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Revoke a seat from an employee.

2. Observe the result and verify the full behavior: Revoke a seat from an employee.

**Expected Result:** Revoke a seat from an employee — delivered exactly as documented.

**Priority:** Critical

### TC-COR-3-02-014 — Immediate access deactivation on revocation

**Type:** Positive

**Covers:** 3.2.2 → Immediate access deactivation on revocation; Rule: One seat per employee at a time.

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Immediate access deactivation on revocation.

2. Observe the result and verify the full behavior: Immediate access deactivation on revocation.

**Expected Result:** Immediate access deactivation on revocation — delivered exactly as documented.

**Priority:** Critical

### TC-COR-3-02-015 — Seat transfer between employees

**Type:** Positive

**Covers:** 3.2.2 → Seat transfer between employees; Rule: One seat per employee at a time.

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Seat transfer between employees.

2. Observe the result and verify the full behavior: Seat transfer between employees.

**Expected Result:** Seat transfer between employees — delivered exactly as documented.

**Priority:** Critical

### TC-COR-3-02-016 — Available on web and mobile

**Type:** Positive

**Covers:** 3.2.2 → Available on web and mobile; Rule: One seat per employee at a time.

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Available on web and mobile.

2. Observe the result and verify the full behavior: Available on web and mobile.

**Expected Result:** Available on web and mobile — delivered exactly as documented.

**Priority:** Critical

### TC-COR-3-02-017 — Assignment event logging (viewed)

**Type:** Positive

**Covers:** 3.2.2 → Assignment event logging (viewed); Rule: One seat per employee at a time.

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Assignment event logging (viewed).

2. Observe the result and verify the full behavior: Assignment event logging (viewed).

**Expected Result:** Assignment event logging (viewed) — delivered exactly as documented.

**Priority:** Medium

### TC-COR-3-02-018 — Audit logging of the seat assignment & revocation

**Type:** Positive

**Covers:** 3.2.2 → Audit logging of the seat assignment & revocation; Rule: One seat per employee at a time.

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Audit logging of the seat assignment & revocation.

2. Observe the result and verify the full behavior: Audit logging of the seat assignment & revocation.

**Expected Result:** Audit logging of the seat assignment & revocation — delivered exactly as documented.

**Priority:** Medium

### TC-COR-3-02-019 — Rule: One seat per employee at a time.

**Type:** Positive

**Covers:** 3.2.2 → One seat per employee at a time.; Rule: One seat per employee at a time..

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: One seat per employee at a time..

2. Observe the result and verify the full behavior: One seat per employee at a time..

**Expected Result:** One seat per employee at a time. — delivered exactly as documented.

**Priority:** High

### TC-COR-3-02-020 — Rule: Revocation deactivates access within 1 minute.

**Type:** Positive

**Covers:** 3.2.2 → Revocation deactivates access within 1 minute.; Rule: Revocation deactivates access within 1 minute..

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Revocation deactivates access within 1 minute..

2. Observe the result and verify the full behavior: Revocation deactivates access within 1 minute..

**Expected Result:** Revocation deactivates access within 1 minute. — delivered exactly as documented.

**Priority:** High

### TC-COR-3-02-021 — Rule: Completed learning records are retained after revocation.

**Type:** Positive

**Covers:** 3.2.2 → Completed learning records are retained after revocation.; Rule: Completed learning records are retained after revocation..

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Completed learning records are retained after revocation..

2. Observe the result and verify the full behavior: Completed learning records are retained after revocation..

**Expected Result:** Completed learning records are retained after revocation. — delivered exactly as documented.

**Priority:** High

### TC-COR-3-02-022 — Rule: Events (viewed) are logged with the account and the timestamp.

**Type:** Positive

**Covers:** 3.2.2 → Events (viewed) are logged with the account and the timestamp.; Rule: Events (viewed) are logged with the account and the timestamp..

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Events (viewed) are logged with the account and the timestamp..

2. Observe the result and verify the full behavior: Events (viewed) are logged with the account and the timestamp..

**Expected Result:** Events (viewed) are logged with the account and the timestamp. — delivered exactly as documented.

**Priority:** High

### TC-COR-3-02-023 — Rule: The seat assignment & revocation is audit-logged with the account and the timestamp.

**Type:** Positive

**Covers:** 3.2.2 → The seat assignment & revocation is audit-logged with the account and the timestamp.; Rule: The seat assignment & revocation is audit-logged with the account and the timestamp..

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: The seat assignment & revocation is audit-logged with the account and the timestamp..

2. Observe the result and verify the full behavior: The seat assignment & revocation is audit-logged with the account and the timestamp..

**Expected Result:** The seat assignment & revocation is audit-logged with the account and the timestamp. — delivered exactly as documented.

**Priority:** High


## 3.2.3 Seat Expiry & Renewal

### TC-COR-3-02-024 — Seat expiry dates

**Type:** Positive

**Covers:** 3.2.3 → Seat expiry dates; Rule: Unrenewed seats deactivate at the end of the billing cycle.

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Seat expiry dates.

2. Observe the result and verify the full behavior: Seat expiry dates.

**Expected Result:** Seat expiry dates — delivered exactly as documented.

**Priority:** Critical

### TC-COR-3-02-025 — Expiring seats alert

**Type:** Positive

**Covers:** 3.2.3 → Expiring seats alert; Rule: Unrenewed seats deactivate at the end of the billing cycle.

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Expiring seats alert.

2. Observe the result and verify the full behavior: Expiring seats alert.

**Expected Result:** Expiring seats alert — delivered exactly as documented.

**Priority:** Critical

### TC-COR-3-02-026 — Bulk renewal of seats

**Type:** Positive

**Covers:** 3.2.3 → Bulk renewal of seats; Rule: Unrenewed seats deactivate at the end of the billing cycle.

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Bulk renewal of seats.

2. Observe the result and verify the full behavior: Bulk renewal of seats.

**Expected Result:** Bulk renewal of seats — delivered exactly as documented.

**Priority:** Critical

### TC-COR-3-02-027 — Release instead of renew

**Type:** Positive

**Covers:** 3.2.3 → Release instead of renew; Rule: Unrenewed seats deactivate at the end of the billing cycle.

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Release instead of renew.

2. Observe the result and verify the full behavior: Release instead of renew.

**Expected Result:** Release instead of renew — delivered exactly as documented.

**Priority:** Critical

### TC-COR-3-02-028 — Available on web and mobile

**Type:** Positive

**Covers:** 3.2.3 → Available on web and mobile; Rule: Unrenewed seats deactivate at the end of the billing cycle.

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Available on web and mobile.

2. Observe the result and verify the full behavior: Available on web and mobile.

**Expected Result:** Available on web and mobile — delivered exactly as documented.

**Priority:** Critical

### TC-COR-3-02-029 — Event logging (viewed)

**Type:** Positive

**Covers:** 3.2.3 → Event logging (viewed); Rule: Unrenewed seats deactivate at the end of the billing cycle.

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Event logging (viewed).

2. Observe the result and verify the full behavior: Event logging (viewed).

**Expected Result:** Event logging (viewed) — delivered exactly as documented.

**Priority:** Medium

### TC-COR-3-02-030 — Audit logging of the seat expiry & renewal

**Type:** Positive

**Covers:** 3.2.3 → Audit logging of the seat expiry & renewal; Rule: Unrenewed seats deactivate at the end of the billing cycle.

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Audit logging of the seat expiry & renewal.

2. Observe the result and verify the full behavior: Audit logging of the seat expiry & renewal.

**Expected Result:** Audit logging of the seat expiry & renewal — delivered exactly as documented.

**Priority:** Medium

### TC-COR-3-02-031 — Rule: Unrenewed seats deactivate at the end of the billing cycle.

**Type:** Positive

**Covers:** 3.2.3 → Unrenewed seats deactivate at the end of the billing cycle.; Rule: Unrenewed seats deactivate at the end of the billing cycle..

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Unrenewed seats deactivate at the end of the billing cycle..

2. Observe the result and verify the full behavior: Unrenewed seats deactivate at the end of the billing cycle..

**Expected Result:** Unrenewed seats deactivate at the end of the billing cycle. — delivered exactly as documented.

**Priority:** High

### TC-COR-3-02-032 — Rule: Renewal is billed on the next invoice, not immediately.

**Type:** Positive

**Covers:** 3.2.3 → Renewal is billed on the next invoice, not immediately.; Rule: Renewal is billed on the next invoice, not immediately..

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Renewal is billed on the next invoice, not immediately..

2. Observe the result and verify the full behavior: Renewal is billed on the next invoice, not immediately..

**Expected Result:** Renewal is billed on the next invoice, not immediately. — delivered exactly as documented.

**Priority:** High

### TC-COR-3-02-033 — Rule: Events (viewed) are logged with the account and the timestamp.

**Type:** Positive

**Covers:** 3.2.3 → Events (viewed) are logged with the account and the timestamp.; Rule: Events (viewed) are logged with the account and the timestamp..

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: Events (viewed) are logged with the account and the timestamp..

2. Observe the result and verify the full behavior: Events (viewed) are logged with the account and the timestamp..

**Expected Result:** Events (viewed) are logged with the account and the timestamp. — delivered exactly as documented.

**Priority:** High

### TC-COR-3-02-034 — Rule: The seat expiry & renewal is audit-logged with the account and the timestamp.

**Type:** Positive

**Covers:** 3.2.3 → The seat expiry & renewal is audit-logged with the account and the timestamp.; Rule: The seat expiry & renewal is audit-logged with the account and the timestamp..

**Preconditions:** A Corporate account is active and the Corporate user is in the state required for this behavior.

**Steps:**

1. As a Corporate user, set up the precondition and perform: The seat expiry & renewal is audit-logged with the account and the timestamp..

2. Observe the result and verify the full behavior: The seat expiry & renewal is audit-logged with the account and the timestamp..

**Expected Result:** The seat expiry & renewal is audit-logged with the account and the timestamp. — delivered exactly as documented.

**Priority:** High
