# 3. Program Funding — Test Cases

User Type: **CSR**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: program_funding.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 | Create a new program with objective and target beneficiaries | TC-CSR-3-01-001 |
| 3.1 | Fund an existing platform program | TC-CSR-3-01-002 |
| 3.1 | Define total budget and funding schedule | TC-CSR-3-01-003 |
| 3.1 | Funding approval workflow (CSR admin approval) | TC-CSR-3-01-004 |
| 3.1 | Program funding confirmation and agreement record | TC-CSR-3-01-005 |
| 3.1 | Create & Fund Programs available on web and mobile | TC-CSR-3-01-006 |
| 3.1 | create & fund programs event logging (viewed) | TC-CSR-3-01-007 |
| 3.1 | Audit logging of create & fund programs | TC-CSR-3-01-008 |
| 3.1 | Rule: Create a new program with objective and target beneficiaries. | TC-CSR-3-01-009 |
| 3.1 | Rule: Fund an existing platform program. | TC-CSR-3-01-010 |
| 3.1 | Rule: Define total budget and funding schedule. | TC-CSR-3-01-011 |
| 3.1 | Rule: Funding approval workflow (CSR admin approval). | TC-CSR-3-01-012 |
| 3.1 | Rule: Program funding confirmation and agreement record. | TC-CSR-3-01-013 |
| 3.2 | Allocate budget across categories | TC-CSR-3-02-014 |
| 3.2 | Allocate budget across periods (tranches) | TC-CSR-3-02-015 |
| 3.2 | Reallocate budget between categories | TC-CSR-3-02-016 |
| 3.2 | Allocation limits and approval for changes | TC-CSR-3-02-017 |
| 3.2 | Allocation history with timestamps | TC-CSR-3-02-018 |
| 3.2 | Budget Allocation available on web and mobile | TC-CSR-3-02-019 |
| 3.2 | budget allocation event logging (viewed) | TC-CSR-3-02-020 |
| 3.2 | Audit logging of budget allocation | TC-CSR-3-02-021 |
| 3.2 | Rule: Allocate budget across categories. | TC-CSR-3-02-022 |
| 3.2 | Rule: Allocate budget across periods (tranches). | TC-CSR-3-02-023 |
| 3.2 | Rule: Reallocate budget between categories. | TC-CSR-3-02-024 |
| 3.2 | Rule: Allocation limits and approval for changes. | TC-CSR-3-02-025 |
| 3.2 | Rule: Allocation history with timestamps. | TC-CSR-3-02-026 |

## 3.1 Create & Fund Programs

### TC-CSR-3-01-001 — Create a new program with objective and target beneficiaries
**Type:** Positive
**Covers:** 3.1 → Create a new program with objective and target beneficiaries; Rule: Create a new program with objective and target beneficiaries.
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform: Create a new program with objective and target beneficiaries.
2. Observe the result and verify the full behavior: Create a new program with objective and target beneficiaries.
**Expected Result:** Create a new program with objective and target beneficiaries — delivered exactly as documented.
**Priority:** Critical

### TC-CSR-3-01-002 — Fund an existing platform program
**Type:** Positive
**Covers:** 3.1 → Fund an existing platform program; Rule: Fund an existing platform program.
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform: Fund an existing platform program.
2. Observe the result and verify the full behavior: Fund an existing platform program.
**Expected Result:** Fund an existing platform program — delivered exactly as documented.
**Priority:** High

### TC-CSR-3-01-003 — Define total budget and funding schedule
**Type:** Positive
**Covers:** 3.1 → Define total budget and funding schedule; Rule: Define total budget and funding schedule.
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform: Define total budget and funding schedule.
2. Observe the result and verify the full behavior: Define total budget and funding schedule.
**Expected Result:** Define total budget and funding schedule — delivered exactly as documented.
**Priority:** Medium

### TC-CSR-3-01-004 — Funding approval workflow (CSR admin approval)
**Type:** Positive
**Covers:** 3.1 → Funding approval workflow (CSR admin approval); Rule: Funding approval workflow (CSR admin approval).
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform: Funding approval workflow (CSR admin approval).
2. Observe the result and verify the full behavior: Funding approval workflow (CSR admin approval).
**Expected Result:** Funding approval workflow (CSR admin approval) — delivered exactly as documented.
**Priority:** Medium

### TC-CSR-3-01-005 — Program funding confirmation and agreement record
**Type:** Positive
**Covers:** 3.1 → Program funding confirmation and agreement record; Rule: Program funding confirmation and agreement record.
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform: Program funding confirmation and agreement record.
2. Observe the result and verify the full behavior: Program funding confirmation and agreement record.
**Expected Result:** Program funding confirmation and agreement record — delivered exactly as documented.
**Priority:** Medium

### TC-CSR-3-01-006 — Create & Fund Programs available on web and mobile
**Type:** Positive
**Covers:** 3.1 → Create & Fund Programs available on web and mobile; Rule: Create a new program with objective and target beneficiaries.
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform: Create & Fund Programs available on web and mobile.
2. Observe the result and verify the full behavior: Create & Fund Programs available on web and mobile.
**Expected Result:** Create & Fund Programs available on web and mobile — delivered exactly as documented.
**Priority:** Medium

### TC-CSR-3-01-007 — create & fund programs event logging (viewed)
**Type:** Positive
**Covers:** 3.1 → create & fund programs event logging (viewed); Rule: Fund an existing platform program.
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform: create & fund programs event logging (viewed).
2. Observe the result and verify the full behavior: create & fund programs event logging (viewed).
**Expected Result:** create & fund programs event logging (viewed) — delivered exactly as documented.
**Priority:** Medium

### TC-CSR-3-01-008 — Audit logging of create & fund programs
**Type:** Positive
**Covers:** 3.1 → Audit logging of create & fund programs; Rule: Define total budget and funding schedule.
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform: Audit logging of create & fund programs.
2. Observe the result and verify the full behavior: Audit logging of create & fund programs.
**Expected Result:** Audit logging of create & fund programs — delivered exactly as documented.
**Priority:** Medium

### TC-CSR-3-01-009 — Rule: Create a new program with objective and target beneficiaries.
**Type:** Positive
**Covers:** 3.1 → Rule: Create a new program with objective and target beneficiaries.
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform the action that triggers the rule: Create a new program with objective and target beneficiaries.
2. Observe the result and verify the full behavior: Create a new program with objective and target beneficiaries.
**Expected Result:** Create a new program with objective and target beneficiaries. — delivered exactly as documented.
**Priority:** Critical

### TC-CSR-3-01-010 — Rule: Fund an existing platform program.
**Type:** Positive
**Covers:** 3.1 → Rule: Fund an existing platform program.
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform the action that triggers the rule: Fund an existing platform program.
2. Observe the result and verify the full behavior: Fund an existing platform program.
**Expected Result:** Fund an existing platform program. — delivered exactly as documented.
**Priority:** High

### TC-CSR-3-01-011 — Rule: Define total budget and funding schedule.
**Type:** Positive
**Covers:** 3.1 → Rule: Define total budget and funding schedule.
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform the action that triggers the rule: Define total budget and funding schedule.
2. Observe the result and verify the full behavior: Define total budget and funding schedule.
**Expected Result:** Define total budget and funding schedule. — delivered exactly as documented.
**Priority:** Medium

### TC-CSR-3-01-012 — Rule: Funding approval workflow (CSR admin approval).
**Type:** Positive
**Covers:** 3.1 → Rule: Funding approval workflow (CSR admin approval).
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform the action that triggers the rule: Funding approval workflow (CSR admin approval).
2. Observe the result and verify the full behavior: Funding approval workflow (CSR admin approval).
**Expected Result:** Funding approval workflow (CSR admin approval). — delivered exactly as documented.
**Priority:** Medium

### TC-CSR-3-01-013 — Rule: Program funding confirmation and agreement record.
**Type:** Positive
**Covers:** 3.1 → Rule: Program funding confirmation and agreement record.
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform the action that triggers the rule: Program funding confirmation and agreement record.
2. Observe the result and verify the full behavior: Program funding confirmation and agreement record.
**Expected Result:** Program funding confirmation and agreement record. — delivered exactly as documented.
**Priority:** Medium

## 3.2 Budget Allocation

### TC-CSR-3-02-014 — Allocate budget across categories
**Type:** Positive
**Covers:** 3.2 → Allocate budget across categories; Rule: Allocate budget across categories.
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform: Allocate budget across categories.
2. Observe the result and verify the full behavior: Allocate budget across categories.
**Expected Result:** Allocate budget across categories — delivered exactly as documented.
**Priority:** Critical

### TC-CSR-3-02-015 — Allocate budget across periods (tranches)
**Type:** Positive
**Covers:** 3.2 → Allocate budget across periods (tranches); Rule: Allocate budget across periods (tranches).
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform: Allocate budget across periods (tranches).
2. Observe the result and verify the full behavior: Allocate budget across periods (tranches).
**Expected Result:** Allocate budget across periods (tranches) — delivered exactly as documented.
**Priority:** High

### TC-CSR-3-02-016 — Reallocate budget between categories
**Type:** Positive
**Covers:** 3.2 → Reallocate budget between categories; Rule: Reallocate budget between categories.
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform: Reallocate budget between categories.
2. Observe the result and verify the full behavior: Reallocate budget between categories.
**Expected Result:** Reallocate budget between categories — delivered exactly as documented.
**Priority:** Medium

### TC-CSR-3-02-017 — Allocation limits and approval for changes
**Type:** Positive
**Covers:** 3.2 → Allocation limits and approval for changes; Rule: Allocation limits and approval for changes.
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform: Allocation limits and approval for changes.
2. Observe the result and verify the full behavior: Allocation limits and approval for changes.
**Expected Result:** Allocation limits and approval for changes — delivered exactly as documented.
**Priority:** Medium

### TC-CSR-3-02-018 — Allocation history with timestamps
**Type:** Positive
**Covers:** 3.2 → Allocation history with timestamps; Rule: Allocation history with timestamps.
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform: Allocation history with timestamps.
2. Observe the result and verify the full behavior: Allocation history with timestamps.
**Expected Result:** Allocation history with timestamps — delivered exactly as documented.
**Priority:** Medium

### TC-CSR-3-02-019 — Budget Allocation available on web and mobile
**Type:** Positive
**Covers:** 3.2 → Budget Allocation available on web and mobile; Rule: Allocate budget across categories.
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform: Budget Allocation available on web and mobile.
2. Observe the result and verify the full behavior: Budget Allocation available on web and mobile.
**Expected Result:** Budget Allocation available on web and mobile — delivered exactly as documented.
**Priority:** Medium

### TC-CSR-3-02-020 — budget allocation event logging (viewed)
**Type:** Positive
**Covers:** 3.2 → budget allocation event logging (viewed); Rule: Allocate budget across periods (tranches).
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform: budget allocation event logging (viewed).
2. Observe the result and verify the full behavior: budget allocation event logging (viewed).
**Expected Result:** budget allocation event logging (viewed) — delivered exactly as documented.
**Priority:** Medium

### TC-CSR-3-02-021 — Audit logging of budget allocation
**Type:** Positive
**Covers:** 3.2 → Audit logging of budget allocation; Rule: Reallocate budget between categories.
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform: Audit logging of budget allocation.
2. Observe the result and verify the full behavior: Audit logging of budget allocation.
**Expected Result:** Audit logging of budget allocation — delivered exactly as documented.
**Priority:** Medium

### TC-CSR-3-02-022 — Rule: Allocate budget across categories.
**Type:** Positive
**Covers:** 3.2 → Rule: Allocate budget across categories.
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform the action that triggers the rule: Allocate budget across categories.
2. Observe the result and verify the full behavior: Allocate budget across categories.
**Expected Result:** Allocate budget across categories. — delivered exactly as documented.
**Priority:** Critical

### TC-CSR-3-02-023 — Rule: Allocate budget across periods (tranches).
**Type:** Positive
**Covers:** 3.2 → Rule: Allocate budget across periods (tranches).
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform the action that triggers the rule: Allocate budget across periods (tranches).
2. Observe the result and verify the full behavior: Allocate budget across periods (tranches).
**Expected Result:** Allocate budget across periods (tranches). — delivered exactly as documented.
**Priority:** High

### TC-CSR-3-02-024 — Rule: Reallocate budget between categories.
**Type:** Positive
**Covers:** 3.2 → Rule: Reallocate budget between categories.
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform the action that triggers the rule: Reallocate budget between categories.
2. Observe the result and verify the full behavior: Reallocate budget between categories.
**Expected Result:** Reallocate budget between categories. — delivered exactly as documented.
**Priority:** Medium

### TC-CSR-3-02-025 — Rule: Allocation limits and approval for changes.
**Type:** Positive
**Covers:** 3.2 → Rule: Allocation limits and approval for changes.
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform the action that triggers the rule: Allocation limits and approval for changes.
2. Observe the result and verify the full behavior: Allocation limits and approval for changes.
**Expected Result:** Allocation limits and approval for changes. — delivered exactly as documented.
**Priority:** Medium

### TC-CSR-3-02-026 — Rule: Allocation history with timestamps.
**Type:** Positive
**Covers:** 3.2 → Rule: Allocation history with timestamps.
**Preconditions:** A CSR account is active and the CSR is in the state required for this behavior.
**Steps:**
1. As a CSR, set up the precondition and perform the action that triggers the rule: Allocation history with timestamps.
2. Observe the result and verify the full behavior: Allocation history with timestamps.
**Expected Result:** Allocation history with timestamps. — delivered exactly as documented.
**Priority:** Medium
