# 2. Grade Organization — Test Cases

User Type: **Super Administrator**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: grade_organization.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 |
|---------|--------------------|----------|
| 2.1 Organize Grades (Grade R to Grade 12+) | Create grades: name/label, order/sequence, and the board they belong to | TC-SA-05-02-001 |
| 2.1 Organize Grades (Grade R to Grade 12+) | Grade range coverage: early grades (Grade R) through Grade 12+ (and beyond where offered) | TC-SA-05-02-002 |
| 2.1 Organize Grades (Grade R to Grade 12+) | Grade ordering: the sequence is maintained so progression is well-defined | TC-SA-05-02-003 |
| 2.1 Organize Grades (Grade R to Grade 12+) | Grade attributes: the grade's level, age band, and description | TC-SA-05-02-004 |
| 2.1 Organize Grades (Grade R to Grade 12+) | Per-board grade sets: a board's grades are its own set (not shared across boards) | TC-SA-05-02-005 |
| 2.1 Organize Grades (Grade R to Grade 12+) | Grade status: active grades are usable; inactive grades are not offered for new placement | TC-SA-05-02-006 |
| 2.1 Organize Grades (Grade R to Grade 12+) | Audit logging of grade create/edit | TC-SA-05-02-007 |
| 2.1 Organize Grades (Grade R to Grade 12+) | Rule: grades belong to a board: a board's grade set is its own; the same grade label under different boards are distinct | TC-SA-05-02-005 |
| 2.1 Organize Grades (Grade R to Grade 12+) | Rule: the grade ordering is maintained; progression follows the sequence, so "next grade" is unambiguous | TC-SA-05-02-003 |
| 2.1 Organize Grades (Grade R to Grade 12+) | Rule: the range covers Grade R through Grade 12+ (and beyond where the board offers it); gaps in the range are visible | TC-SA-05-02-002 |
| 2.1 Organize Grades (Grade R to Grade 12+) | Rule: an inactive grade is not offered for new placement but preserves existing placements and history | TC-SA-05-02-006 |
| 2.1 Organize Grades (Grade R to Grade 12+) | Rule: grade attributes (level, age band) support age-appropriate handling (see 2.2) | TC-SA-05-02-004 |
| 2.1 Organize Grades (Grade R to Grade 12+) | Rule: grade create and edit are audit-logged with the board, grade, and timestamp | TC-SA-05-02-007 |
| 2.2 Age-Appropriate Content Tagging | Age/grade-appropriateness tag on content (the grades/ages the content suits) | TC-SA-05-02-008 |
| 2.2 Age-Appropriate Content Tagging | Tagging at content creation/edit (the creator marks the appropriate grades) | TC-SA-05-02-009 |
| 2.2 Age-Appropriate Content Tagging | Surfacing rule: a learner sees content tagged for their grade/age band | TC-SA-05-02-010 |
| 2.2 Age-Appropriate Content Tagging | Review of age-appropriateness (a check that tags are correct) | TC-SA-05-02-011 |
| 2.2 Age-Appropriate Content Tagging | Restriction: content not tagged for a learner's grade is not surfaced to them | TC-SA-05-02-012 |
| 2.2 Age-Appropriate Content Tagging | Bulk tagging for a set of content (a batch marked for a grade range) | TC-SA-05-02-013 |
| 2.2 Age-Appropriate Content Tagging | Audit logging of age-appropriateness tag changes | TC-SA-05-02-014 |
| 2.2 Age-Appropriate Content Tagging | Rule: content is surfaced to a learner only where it is tagged for their grade/age band; untagged content is not surfaced broadly | TC-SA-05-02-015 |
| 2.2 Age-Appropriate Content Tagging | Rule: the tag is set at creation/edit and can be corrected; corrections are recorded | TC-SA-05-02-009 |
| 2.2 Age-Appropriate Content Tagging | Rule: a wide-range tag makes content available across the suitable grades; a narrow tag restricts it | TC-SA-05-02-016 |
| 2.2 Age-Appropriate Content Tagging | Rule: age-appropriateness is a surfacing control, not a hard block on access where a learner is explicitly enrolled (enrollment can override surfacing per the course's rules) | TC-SA-05-02-017 |
| 2.2 Age-Appropriate Content Tagging | Rule: bulk tagging applies a consistent tag to a set; per-item overrides are possible | TC-SA-05-02-013 |
| 2.2 Age-Appropriate Content Tagging | Rule: tag changes are audit-logged with the content, grades, and timestamp | TC-SA-05-02-014 |
| 2.3 Grade-Specific Learning Objectives | Learning objectives per grade (and per subject within the grade where defined) | TC-SA-05-02-018 |
| 2.3 Grade-Specific Learning Objectives | Objective authoring: clear, measurable statements of what the grade achieves | TC-SA-05-02-019 |
| 2.3 Grade-Specific Learning Objectives | Alignment: content and assessments can be linked to the objectives they serve | TC-SA-05-02-020 |
| 2.3 Grade-Specific Learning Objectives | Objective review: the set is reviewed for completeness and correctness per grade | TC-SA-05-02-021 |
| 2.3 Grade-Specific Learning Objectives | Progression: objectives build across grades (a grade's objectives extend the prior grade's) | TC-SA-05-02-022 |
| 2.3 Grade-Specific Learning Objectives | Visibility: the objectives are visible in the grade's context (for creators and, per policy, learners) | TC-SA-05-02-023 |
| 2.3 Grade-Specific Learning Objectives | Audit logging of objective changes | TC-SA-05-02-024 |
| 2.3 Grade-Specific Learning Objectives | Rule: objectives are per grade (and per subject where defined); they are the curriculum's intent for that level | TC-SA-05-02-018 |
| 2.3 Grade-Specific Learning Objectives | Rule: objectives are measurable statements; vague objectives are corrected at review | TC-SA-05-02-021 |
| 2.3 Grade-Specific Learning Objectives | Rule: alignment is tracked: objectives link to the content/assessments that serve them, so coverage and gaps are visible | TC-SA-05-02-020 |
| 2.3 Grade-Specific Learning Objectives | Rule: progression is maintained: a grade's objectives extend the prior grade's, keeping the sequence coherent | TC-SA-05-02-022 |
| 2.3 Grade-Specific Learning Objectives | Rule: an objective with no aligned material is a visible gap, routed for closure | TC-SA-05-02-025 |
| 2.3 Grade-Specific Learning Objectives | Rule: objective changes are audit-logged with the grade, objectives, and timestamp | TC-SA-05-02-024 |

## 2.1 Organize Grades (Grade R to Grade 12+)

### TC-SA-05-02-001 — Create grades with name/label, order/sequence, and the board they belong to
**Type:** Positive
**Covers:** 2.1 → Create grades: name/label, order/sequence, and the board they belong to
**Preconditions:** A board's curriculum is being mapped.
**Steps:**
1. Open Grade Organization for the board.
2. Create the board's grades in sequence: Grade R, Grade 1, through Grade 12.
3. Save and verify the grades appear under the board.
**Expected Result:** The grades are created with their labels, order, and board; they appear under the board and are available for subject mapping and learner placement.
**Priority:** Critical

### TC-SA-05-02-002 — Grade range coverage: Grade R through Grade 12+ (and beyond where offered); gaps in the range are visible
**Type:** Positive
**Covers:** 2.1 → Grade range coverage: early grades (Grade R) through Grade 12+ (and beyond where offered); Rule: the range covers Grade R through Grade 12+ (and beyond where the board offers it); gaps in the range are visible
**Preconditions:** A board offers Grade R through Grade 12.
**Steps:**
1. Create the full range Grade R through Grade 12.
2. Verify the range is complete with no gaps.
3. Remove one grade temporarily and verify the gap is visible.
**Expected Result:** The range covers Grade R through Grade 12+; a gap in the range is visible.
**Priority:** High

### TC-SA-05-02-003 — Grade ordering: the sequence is maintained so progression is well-defined; "next grade" is unambiguous
**Type:** Positive
**Covers:** 2.1 → Grade ordering: the sequence is maintained so progression is well-defined; Rule: the grade ordering is maintained; progression follows the sequence, so "next grade" is unambiguous
**Preconditions:** The board's grades are created in sequence.
**Steps:**
1. Verify the grade ordering (Grade R → Grade 1 → … → Grade 12).
2. Verify "next grade" from Grade 5 is unambiguously Grade 6.
**Expected Result:** The grade ordering is maintained; progression follows the sequence and "next grade" is unambiguous.
**Priority:** High

### TC-SA-05-02-004 — Grade attributes: the grade's level, age band, and description support age-appropriate handling
**Type:** Positive
**Covers:** 2.1 → Grade attributes: the grade's level, age band, and description; Rule: grade attributes (level, age band) support age-appropriate handling (see 2.2)
**Preconditions:** A grade is being created.
**Steps:**
1. Set the grade's attributes: the level, the age band, and a short description.
2. Verify the attributes are stored and used for age-appropriate handling.
**Expected Result:** The grade's attributes (level, age band, description) are set and support age-appropriate handling.
**Priority:** Medium

### TC-SA-05-02-005 — Per-board grade sets: a board's grades are its own set; the same grade label under different boards are distinct
**Type:** Edge
**Covers:** 2.1 → Per-board grade sets: a board's grades are its own set (not shared across boards); Rule: grades belong to a board: a board's grade set is its own; the same grade label under different boards are distinct
**Preconditions:** "Grade 10" exists under both the Cambridge and CAPS boards.
**Steps:**
1. Edit the Cambridge "Grade 10" attributes.
2. Verify the CAPS "Grade 10" is unaffected (distinct grade under a different board).
**Expected Result:** The two "Grade 10" grades are distinct per-board entities — editing one does not affect the other.
**Priority:** High

### TC-SA-05-02-006 — Grade status: active grades are usable; inactive grades are not offered for new placement but preserve existing placements
**Type:** Negative
**Covers:** 2.1 → Grade status: active grades are usable; inactive grades are not offered for new placement; Rule: an inactive grade is not offered for new placement but preserves existing placements and history
**Preconditions:** A grade is no longer offered (a program change); it has existing learner placements.
**Steps:**
1. Set the grade inactive.
2. Verify the grade is not offered for new placement.
3. Verify the existing placements and history remain intact.
**Expected Result:** The inactive grade is not offered for new placement; existing placements and history are preserved.
**Priority:** Critical

### TC-SA-05-02-007 — Grade create and edit are audit-logged with the board, grade, and timestamp
**Type:** Positive
**Covers:** 2.1 → Audit logging of grade create/edit; Rule: grade create and edit are audit-logged with the board, grade, and timestamp
**Preconditions:** Grades have been created and edited.
**Steps:**
1. Open the audit trail and filter by "grade".
2. Verify entries for create and edit with the board, the grade, and the timestamp.
**Expected Result:** Each grade create and edit is audit-logged with the board, grade, and timestamp.
**Priority:** Critical

## 2.2 Age-Appropriate Content Tagging

### TC-SA-05-02-008 — Age/grade-appropriateness tag on content: the grades/ages the content suits
**Type:** Positive
**Covers:** 2.2 → Age/grade-appropriateness tag on content (the grades/ages the content suits)
**Preconditions:** A set of new content is added.
**Steps:**
1. Review the age-appropriateness tags on the new content.
2. Verify each item is marked for the grades it suits (e.g., Grades 4–6 for the simple treatment, Grades 7–9 for the deeper treatment).
**Expected Result:** Each content item carries an age/grade-appropriateness tag marking the grades it suits.
**Priority:** High

### TC-SA-05-02-009 — Tagging at content creation/edit: the creator marks the appropriate grades; corrections are recorded
**Type:** Positive
**Covers:** 2.2 → Tagging at content creation/edit (the creator marks the appropriate grades); Rule: the tag is set at creation/edit and can be corrected; corrections are recorded
**Preconditions:** A content item is being created; a mis-tagged item needs correction.
**Steps:**
1. At creation, mark the appropriate grades for the new item.
2. Correct the mis-tagged item's grades.
3. Verify the correction is recorded in the audit trail.
**Expected Result:** The tag is set at creation/edit; the correction is applied and recorded.
**Priority:** High

### TC-SA-05-02-010 — Surfacing rule: a learner sees content tagged for their grade/age band
**Type:** Positive
**Covers:** 2.2 → Surfacing rule: a learner sees content tagged for their grade/age band
**Preconditions:** A Grade 5 learner exists; content is tagged for Grades 4–6 and separately for Grades 7–9.
**Steps:**
1. As the Grade 5 learner, browse the content.
2. Verify the content tagged for Grades 4–6 is surfaced.
**Expected Result:** The Grade 5 learner sees the content tagged for their grade/age band (Grades 4–6).
**Priority:** Critical

### TC-SA-05-02-011 — Review of age-appropriateness: a check that tags are correct; a mis-tag is corrected
**Type:** Positive
**Covers:** 2.2 → Review of age-appropriateness (a check that tags are correct)
**Preconditions:** A sample of tagged content is reviewed.
**Steps:**
1. Review a sample for correctness (an item tagged for early grades is genuinely age-appropriate in language and complexity).
2. Identify and correct a mis-tag.
**Expected Result:** The review confirms tags are correct; the mis-tag is corrected.
**Priority:** Medium

### TC-SA-05-02-012 — Restriction: content not tagged for a learner's grade is not surfaced to them
**Type:** Negative
**Covers:** 2.2 → Restriction: content not tagged for a learner's grade is not surfaced to them
**Preconditions:** A Grade 5 learner exists; content is tagged only for Grades 7–9.
**Steps:**
1. As the Grade 5 learner, browse the content.
2. Verify the Grades 7–9 content is not surfaced.
**Expected Result:** The Grades 7–9 content is not surfaced to the Grade 5 learner — the restriction is enforced.
**Priority:** Critical

### TC-SA-05-02-013 — Bulk tagging for a set of content (a batch marked for a grade range); per-item overrides are possible
**Type:** Positive
**Covers:** 2.2 → Bulk tagging for a set of content (a batch marked for a grade range); Rule: bulk tagging applies a consistent tag to a set; per-item overrides are possible
**Preconditions:** A batch of content is produced for a specific grade range (Grades 4–6).
**Steps:**
1. Apply the bulk tag (Grades 4–6) to the batch.
2. Verify all items in the batch carry the tag.
3. Override one item's tag individually and verify the override is respected.
**Expected Result:** The bulk tag is applied consistently to the set; the per-item override is respected.
**Priority:** High

### TC-SA-05-02-014 — Tag changes are audit-logged with the content, the grades tagged, and the timestamp
**Type:** Positive
**Covers:** 2.2 → Audit logging of age-appropriateness tag changes; Rule: tag changes are audit-logged with the content, grades, and timestamp
**Preconditions:** Age-appropriateness tags have been changed (single and bulk).
**Steps:**
1. Open the audit trail and filter by "age-appropriateness".
2. Verify entries show the content, the grades tagged, and the timestamp.
**Expected Result:** The tag changes are audit-logged with the content, grades, and timestamp.
**Priority:** Critical

### TC-SA-05-02-015 — Untagged content is not surfaced broadly
**Type:** Negative
**Covers:** 2.2 → Rule: content is surfaced to a learner only where it is tagged for their grade/age band; untagged content is not surfaced broadly
**Preconditions:** A content item has no age-appropriateness tag.
**Steps:**
1. Verify the untagged content is flagged for tagging.
2. As a learner, verify the untagged content is not surfaced broadly.
**Expected Result:** The untagged content is flagged for tagging and is not surfaced broadly to learners.
**Priority:** Critical

### TC-SA-05-02-016 — A wide-range tag makes content available across the suitable grades; a narrow tag restricts it
**Type:** Positive
**Covers:** 2.2 → Rule: a wide-range tag makes content available across the suitable grades; a narrow tag restricts it
**Preconditions:** Content A is appropriate across a wide range (Grades 1–12); Content B is suitable only for Grades 10–12.
**Steps:**
1. Tag Content A for the full range (Grades 1–12) and verify it is surfaced to all suitable grades.
2. Tag Content B narrowly (Grades 10–12) and verify it is restricted to those grades.
**Expected Result:** Content A is available across the wide range; Content B is restricted to Grades 10–12.
**Priority:** Medium

### TC-SA-05-02-017 — Age-appropriateness is a surfacing control, not a hard block: an explicitly enrolled learner can access per the course's rules
**Type:** Edge
**Covers:** 2.2 → Rule: age-appropriateness is a surfacing control, not a hard block on access where a learner is explicitly enrolled (enrollment can override surfacing per the course's rules)
**Preconditions:** A Grade 5 learner is explicitly enrolled in a course whose content is tagged for Grades 7–9.
**Steps:**
1. As the enrolled Grade 5 learner, open the enrolled course's content.
2. Verify access is allowed per the course's rules (enrollment overrides surfacing).
**Expected Result:** The enrolled learner can access the content per the course's rules — age-appropriateness is a surfacing control, not a hard block on enrolled access.
**Priority:** High

## 2.3 Grade-Specific Learning Objectives

### TC-SA-05-02-018 — Learning objectives per grade (and per subject within the grade where defined)
**Type:** Positive
**Covers:** 2.3 → Learning objectives per grade (and per subject within the grade where defined); Rule: objectives are per grade (and per subject where defined); they are the curriculum's intent for that level
**Preconditions:** A grade's learning objectives are being defined.
**Steps:**
1. Open the grade's learning objectives.
2. Verify the set of measurable statements of what the grade achieves, per subject where defined.
**Expected Result:** The grade's learning objectives are defined per grade (and per subject where defined) — the curriculum's intent for that level.
**Priority:** High

### TC-SA-05-02-019 — Objective authoring: clear, measurable statements of what the grade achieves
**Type:** Positive
**Covers:** 2.3 → Objective authoring: clear, measurable statements of what the grade achieves
**Preconditions:** The curriculum intent for a grade has changed.
**Steps:**
1. Author or update an objective where the intent has changed.
2. Verify the objective is clear and measurable.
**Expected Result:** The objective is authored/updated as a clear, measurable statement of what the grade achieves.
**Priority:** High

### TC-SA-05-02-020 — Alignment: content and assessments are linked to the objectives they serve; coverage and gaps are visible
**Type:** Positive
**Covers:** 2.3 → Alignment: content and assessments can be linked to the objectives they serve; Rule: alignment is tracked: objectives link to the content/assessments that serve them, so coverage and gaps are visible
**Preconditions:** A grade's objectives, content, and assessments exist.
**Steps:**
1. Link the grade's content and assessments to the objectives they serve.
2. Verify coverage is visible (each objective has content/assessments; each item maps to an objective).
**Expected Result:** The content and assessments are linked to the objectives; coverage and gaps are visible.
**Priority:** High

### TC-SA-05-02-021 — Objective review: the set is reviewed for completeness and correctness; vague objectives are corrected
**Type:** Positive
**Covers:** 2.3 → Objective review: the set is reviewed for completeness and correctness per grade; Rule: objectives are measurable statements; vague objectives are corrected at review
**Preconditions:** A grade's objective set is reviewed; one objective is vague.
**Steps:**
1. Review the objective set per grade for completeness (all intended outcomes captured, none missing).
2. Identify the vague objective and correct it to a measurable statement.
**Expected Result:** The set is reviewed for completeness and correctness; the vague objective is corrected to a measurable statement.
**Priority:** Medium

### TC-SA-05-02-022 — Progression: a grade's objectives extend the prior grade's, keeping the sequence coherent
**Type:** Positive
**Covers:** 2.3 → Progression: objectives build across grades (a grade's objectives extend the prior grade's); Rule: progression is maintained: a grade's objectives extend the prior grade's, keeping the sequence coherent
**Preconditions:** Grade 5 and Grade 6 objectives are defined.
**Steps:**
1. Review Grade 6's objectives against Grade 5's.
2. Verify Grade 6's objectives extend Grade 5's (a learner building on what they achieved).
**Expected Result:** Grade 6's objectives extend Grade 5's — the progression is coherent.
**Priority:** Medium

### TC-SA-05-02-023 — Visibility: the objectives are visible in the grade's context (for creators and, per policy, learners)
**Type:** Positive
**Covers:** 2.3 → Visibility: the objectives are visible in the grade's context (for creators and, per policy, learners)
**Preconditions:** A grade's objectives are defined.
**Steps:**
1. As a creator, verify the objectives are visible when authoring aligned material.
2. As a learner, verify the objectives are visible per policy (the grade's goals).
**Expected Result:** The objectives are visible in the grade's context — to creators when authoring and to learners per policy.
**Priority:** Medium

### TC-SA-05-02-024 — Objective changes are audit-logged with the grade, the objectives, and the timestamp
**Type:** Positive
**Covers:** 2.3 → Audit logging of objective changes; Rule: objective changes are audit-logged with the grade, objectives, and timestamp
**Preconditions:** Objectives have been authored, updated, and aligned.
**Steps:**
1. Open the audit trail and filter by "objective".
2. Verify entries show the grade, the objectives, and the timestamp.
**Expected Result:** The objective changes are audit-logged with the grade, objectives, and timestamp.
**Priority:** Critical

### TC-SA-05-02-025 — An objective with no aligned material is a visible gap, routed for closure
**Type:** Negative
**Covers:** 2.3 → Rule: an objective with no aligned material is a visible gap, routed for closure
**Preconditions:** An objective has no aligned content or assessment.
**Steps:**
1. Review the alignment and verify the objective with no aligned material is flagged as a visible gap.
2. Route the gap to the content/assessment owners for closure.
**Expected Result:** The objective with no aligned material is a visible gap and is routed to the owners for closure.
**Priority:** High
