# 3. Custom Reports & Dashboards — Test Cases

User Type: **Training Institute**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: custom_reports_dashboards.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.1 | Custom report builder | TC-TI-6-03-001 |
| 3.1 | Select metrics and dimensions | TC-TI-6-03-002 |
| 3.1 | Apply filters | TC-TI-6-03-003 |
| 3.1 | Set the date range | TC-TI-6-03-004 |
| 3.1 | Generate the report | TC-TI-6-03-005 |
| 3.1 | Save the report for reuse | TC-TI-6-03-006 |
| 3.1 | Builder available on web and mobile | TC-TI-6-03-007 |
| 3.1 | Builder event logging (generated, saved) | TC-TI-6-03-008 |
| 3.1 | Audit logging of the custom report builder | TC-TI-6-03-009 |
| 3.1 | Rule: A saved report can be re-run with the same settings. | TC-TI-6-03-001 |
| 3.1 | Rule: The report is limited to the institute's data. | TC-TI-6-03-002 |
| 3.1 | Rule: Builder events (generated, saved) are logged with the account and the timestamp. | TC-TI-6-03-003 |
| 3.1 | Rule: The custom report builder is audit-logged with the account and the timestamp. | TC-TI-6-03-004 |
| 3.2 | Saved reports list | TC-TI-6-03-010 |
| 3.2 | Re-run a saved report | TC-TI-6-03-011 |
| 3.2 | Edit a saved report's settings | TC-TI-6-03-012 |
| 3.2 | Share a report by link | TC-TI-6-03-013 |
| 3.2 | Last-run time shown | TC-TI-6-03-014 |
| 3.2 | Delete a saved report | TC-TI-6-03-015 |
| 3.2 | Sharing available on web and mobile | TC-TI-6-03-016 |
| 3.2 | Sharing event logging (shared, re-run) | TC-TI-6-03-017 |
| 3.2 | Audit logging of the saved reports and sharing | TC-TI-6-03-018 |
| 3.2 | Rule: The share link access is controlled to institute admins. | TC-TI-6-03-010 |
| 3.2 | Rule: A deleted report cannot be re-run. | TC-TI-6-03-011 |
| 3.2 | Rule: Sharing events (shared, re-run) are logged with the account and the timestamp. | TC-TI-6-03-012 |
| 3.2 | Rule: The saved reports and sharing is audit-logged with the account and the timestamp. | TC-TI-6-03-013 |
| 3.3 | Custom dashboard builder | TC-TI-6-03-019 |
| 3.3 | Add report widgets | TC-TI-6-03-020 |
| 3.3 | Arrange the widgets | TC-TI-6-03-021 |
| 3.3 | Save the dashboard | TC-TI-6-03-022 |
| 3.3 | Multiple dashboards supported | TC-TI-6-03-023 |
| 3.3 | Switch between dashboards | TC-TI-6-03-024 |
| 3.3 | Dashboard available on web and mobile | TC-TI-6-03-025 |
| 3.3 | Dashboard event logging (created, updated) | TC-TI-6-03-026 |
| 3.3 | Audit logging of the custom dashboard | TC-TI-6-03-027 |
| 3.3 | Rule: Multiple dashboards are supported. | TC-TI-6-03-019 |
| 3.3 | Rule: A dashboard is saved per admin user. | TC-TI-6-03-020 |
| 3.3 | Rule: Dashboard events (created, updated) are logged with the account and the timestamp. | TC-TI-6-03-021 |
| 3.3 | Rule: The custom dashboard is audit-logged with the account and the timestamp. | TC-TI-6-03-022 |

## 3.1 Custom Report Builder

### TC-TI-6-03-001 — Custom report builder
**Type:** Positive
**Covers:** 3.1 → Custom report builder; Rule: A saved report can be re-run with the same settings.
**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: Custom report builder.
2. Observe the result and verify the full behavior: Custom report builder.
**Expected Result:** Custom report builder — delivered exactly as documented.
**Priority:** Critical

### TC-TI-6-03-002 — Select metrics and dimensions
**Type:** Positive
**Covers:** 3.1 → Select metrics and dimensions; Rule: The report is limited to the institute's data.
**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: Select metrics and dimensions.
2. Observe the result and verify the full behavior: Select metrics and dimensions.
**Expected Result:** Select metrics and dimensions — delivered exactly as documented.
**Priority:** High

### TC-TI-6-03-003 — Apply filters
**Type:** Positive
**Covers:** 3.1 → Apply filters; Rule: Builder events (generated, saved) 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: Apply filters.
2. Observe the result and verify the full behavior: Apply filters.
**Expected Result:** Apply filters — delivered exactly as documented.
**Priority:** High

### TC-TI-6-03-004 — Set the date range
**Type:** Positive
**Covers:** 3.1 → Set the date range; Rule: The custom report builder 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: Set the date range.
2. Observe the result and verify the full behavior: Set the date range.
**Expected Result:** Set the date range — delivered exactly as documented.
**Priority:** High

### TC-TI-6-03-005 — Generate the report
**Type:** Positive
**Covers:** 3.1 → Generate the report
**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: Generate the report.
2. Observe the result and verify the full behavior: Generate the report.
**Expected Result:** Generate the report — delivered exactly as documented.
**Priority:** High

### TC-TI-6-03-006 — Save the report for reuse
**Type:** Edge
**Covers:** 3.1 → Save the report for reuse
**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: Save the report for reuse.
2. Observe the result and verify the full behavior: Save the report for reuse.
**Expected Result:** Save the report for reuse — delivered exactly as documented.
**Priority:** High

### TC-TI-6-03-007 — Builder available on web and mobile
**Type:** Positive
**Covers:** 3.1 → Builder 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: Builder available on web and mobile.
2. Observe the result and verify the full behavior: Builder available on web and mobile.
**Expected Result:** Builder available on web and mobile — delivered exactly as documented.
**Priority:** High

### TC-TI-6-03-008 — Builder event logging (generated, saved)
**Type:** Positive
**Covers:** 3.1 → Builder event logging (generated, saved)
**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: Builder event logging (generated, saved).
2. Observe the result and verify the full behavior: Builder event logging (generated, saved).
**Expected Result:** Builder event logging (generated, saved) — delivered exactly as documented.
**Priority:** High

### TC-TI-6-03-009 — Audit logging of the custom report builder
**Type:** Positive
**Covers:** 3.1 → Audit logging of the custom report builder
**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 custom report builder action.
2. Open the audit log and verify the entry for the action.
**Expected Result:** The custom report builder action is recorded in the audit log with the account and the timestamp.
**Priority:** Critical


## 3.2 Saved Reports & Sharing

### TC-TI-6-03-010 — Saved reports list
**Type:** Positive
**Covers:** 3.2 → Saved reports list; Rule: The share link access is controlled to institute admins.
**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: Saved reports list.
2. Observe the result and verify the full behavior: Saved reports list.
**Expected Result:** Saved reports list — delivered exactly as documented.
**Priority:** Critical

### TC-TI-6-03-011 — Re-run a saved report
**Type:** Positive
**Covers:** 3.2 → Re-run a saved report; Rule: A deleted report cannot be re-run.
**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: Re-run a saved report.
2. Observe the result and verify the full behavior: Re-run a saved report.
**Expected Result:** Re-run a saved report — delivered exactly as documented.
**Priority:** High

### TC-TI-6-03-012 — Edit a saved report's settings
**Type:** Positive
**Covers:** 3.2 → Edit a saved report's settings; Rule: Sharing events (shared, re-run) 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: Edit a saved report's settings.
2. Observe the result and verify the full behavior: Edit a saved report's settings.
**Expected Result:** Edit a saved report's settings — delivered exactly as documented.
**Priority:** High

### TC-TI-6-03-013 — Share a report by link
**Type:** Positive
**Covers:** 3.2 → Share a report by link; Rule: The saved reports and sharing 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: Share a report by link.
2. Observe the result and verify the full behavior: Share a report by link.
**Expected Result:** Share a report by link — delivered exactly as documented.
**Priority:** High

### TC-TI-6-03-014 — Last-run time shown
**Type:** Positive
**Covers:** 3.2 → Last-run time 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: Last-run time shown.
2. Observe the result and verify the full behavior: Last-run time shown.
**Expected Result:** Last-run time shown — delivered exactly as documented.
**Priority:** High

### TC-TI-6-03-015 — Delete a saved report
**Type:** Positive
**Covers:** 3.2 → Delete a saved report
**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: Delete a saved report.
2. Observe the result and verify the full behavior: Delete a saved report.
**Expected Result:** Delete a saved report — delivered exactly as documented.
**Priority:** High

### TC-TI-6-03-016 — Sharing available on web and mobile
**Type:** Positive
**Covers:** 3.2 → Sharing 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: Sharing available on web and mobile.
2. Observe the result and verify the full behavior: Sharing available on web and mobile.
**Expected Result:** Sharing available on web and mobile — delivered exactly as documented.
**Priority:** High

### TC-TI-6-03-017 — Sharing event logging (shared, re-run)
**Type:** Positive
**Covers:** 3.2 → Sharing event logging (shared, re-run)
**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: Sharing event logging (shared, re-run).
2. Observe the result and verify the full behavior: Sharing event logging (shared, re-run).
**Expected Result:** Sharing event logging (shared, re-run) — delivered exactly as documented.
**Priority:** High

### TC-TI-6-03-018 — Audit logging of the saved reports and sharing
**Type:** Positive
**Covers:** 3.2 → Audit logging of the saved reports and sharing
**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 saved reports and sharing action.
2. Open the audit log and verify the entry for the action.
**Expected Result:** The saved reports and sharing action is recorded in the audit log with the account and the timestamp.
**Priority:** Critical


## 3.3 Custom Dashboard

### TC-TI-6-03-019 — Custom dashboard builder
**Type:** Positive
**Covers:** 3.3 → Custom dashboard builder; Rule: Multiple dashboards are supported.
**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: Custom dashboard builder.
2. Observe the result and verify the full behavior: Custom dashboard builder.
**Expected Result:** Custom dashboard builder — delivered exactly as documented.
**Priority:** Critical

### TC-TI-6-03-020 — Add report widgets
**Type:** Positive
**Covers:** 3.3 → Add report widgets; Rule: A dashboard is saved per admin user.
**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: Add report widgets.
2. Observe the result and verify the full behavior: Add report widgets.
**Expected Result:** Add report widgets — delivered exactly as documented.
**Priority:** High

### TC-TI-6-03-021 — Arrange the widgets
**Type:** Positive
**Covers:** 3.3 → Arrange the widgets; Rule: Dashboard events (created, updated) 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: Arrange the widgets.
2. Observe the result and verify the full behavior: Arrange the widgets.
**Expected Result:** Arrange the widgets — delivered exactly as documented.
**Priority:** High

### TC-TI-6-03-022 — Save the dashboard
**Type:** Positive
**Covers:** 3.3 → Save the dashboard; Rule: The custom dashboard 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: Save the dashboard.
2. Observe the result and verify the full behavior: Save the dashboard.
**Expected Result:** Save the dashboard — delivered exactly as documented.
**Priority:** High

### TC-TI-6-03-023 — Multiple dashboards supported
**Type:** Positive
**Covers:** 3.3 → Multiple dashboards supported
**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: Multiple dashboards supported.
2. Observe the result and verify the full behavior: Multiple dashboards supported.
**Expected Result:** Multiple dashboards supported — delivered exactly as documented.
**Priority:** High

### TC-TI-6-03-024 — Switch between dashboards
**Type:** Positive
**Covers:** 3.3 → Switch between dashboards
**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: Switch between dashboards.
2. Observe the result and verify the full behavior: Switch between dashboards.
**Expected Result:** Switch between dashboards — delivered exactly as documented.
**Priority:** High

### TC-TI-6-03-025 — Dashboard available on web and mobile
**Type:** Positive
**Covers:** 3.3 → Dashboard 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: Dashboard available on web and mobile.
2. Observe the result and verify the full behavior: Dashboard available on web and mobile.
**Expected Result:** Dashboard available on web and mobile — delivered exactly as documented.
**Priority:** High

### TC-TI-6-03-026 — Dashboard event logging (created, updated)
**Type:** Positive
**Covers:** 3.3 → Dashboard event logging (created, updated)
**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: Dashboard event logging (created, updated).
2. Observe the result and verify the full behavior: Dashboard event logging (created, updated).
**Expected Result:** Dashboard event logging (created, updated) — delivered exactly as documented.
**Priority:** High

### TC-TI-6-03-027 — Audit logging of the custom dashboard
**Type:** Positive
**Covers:** 3.3 → Audit logging of the custom dashboard
**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 custom dashboard action.
2. Open the audit log and verify the entry for the action.
**Expected Result:** The custom dashboard action is recorded in the audit log with the account and the timestamp.
**Priority:** Critical
