# 4. Category Management (Professional) — Test Cases

User Type: **Super Administrator**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: category_management.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 |
|---------|--------------------|----------|
| 4.1 Create Major Categories (IT, Business, Languages, Creative) | Create a major category: name, description, and status | TC-SA-05-04-001 |
| 4.1 Create Major Categories (IT, Business, Languages, Creative) | The major category set (IT, Business, Languages, Creative, and others as offered) | TC-SA-05-04-002 |
| 4.1 Create Major Categories (IT, Business, Languages, Creative) | Category list with the count of sub-categories and courses under each | TC-SA-05-04-003 |
| 4.1 Create Major Categories (IT, Business, Languages, Creative) | Category status: active categories are browsable; inactive categories are not offered | TC-SA-05-04-004 |
| 4.1 Create Major Categories (IT, Business, Languages, Creative) | Distinction from the academic hierarchy: professional categories are a separate organizing tree from boards/grades/subjects | TC-SA-05-04-005 |
| 4.1 Create Major Categories (IT, Business, Languages, Creative) | Category ordering for display | TC-SA-05-04-006 |
| 4.1 Create Major Categories (IT, Business, Languages, Creative) | Audit logging of category create/edit | TC-SA-05-04-007 |
| 4.1 Create Major Categories (IT, Business, Languages, Creative) | Rule: major categories are the top level of the professional catalog; they are distinct from the academic hierarchy (boards/grades/subjects) | TC-SA-05-04-005 |
| 4.1 Create Major Categories (IT, Business, Languages, Creative) | Rule: an inactive category is not browsable but is preserved (activatable later); deletion is for categories with no dependencies | TC-SA-05-04-008 |
| 4.1 Create Major Categories (IT, Business, Languages, Creative) | Rule: the category list shows the sub-category and course counts, so an empty category is visible | TC-SA-05-04-003 |
| 4.1 Create Major Categories (IT, Business, Languages, Creative) | Rule: display order is maintained for the catalog presentation | TC-SA-05-04-006 |
| 4.1 Create Major Categories (IT, Business, Languages, Creative) | Rule: a course is organized under the professional category tree or the academic tree, not both ambiguously (the context is explicit) | TC-SA-05-04-009 |
| 4.1 Create Major Categories (IT, Business, Languages, Creative) | Rule: category create and edit are audit-logged with the category and timestamp | TC-SA-05-04-007 |
| 4.2 Category Descriptions and Objectives | Category description: what the category covers, in learner-facing terms | TC-SA-05-04-010 |
| 4.2 Category Descriptions and Objectives | Category objectives: what a learner achieves by completing the category's learning | TC-SA-05-04-011 |
| 4.2 Category Descriptions and Objectives | Description/objective authoring in clear, measurable terms | TC-SA-05-04-012 |
| 4.2 Category Descriptions and Objectives | Visibility: the description and objectives are shown in the category's catalog page | TC-SA-05-04-013 |
| 4.2 Category Descriptions and Objectives | Review: the set is reviewed for accuracy and appeal | TC-SA-05-04-014 |
| 4.2 Category Descriptions and Objectives | Update as the category's offerings evolve | TC-SA-05-04-015 |
| 4.2 Category Descriptions and Objectives | Audit logging of description/objective changes | TC-SA-05-04-016 |
| 4.2 Category Descriptions and Objectives | Rule: the description and objectives are learner-facing; they are written for the audience, not internally | TC-SA-05-04-012 |
| 4.2 Category Descriptions and Objectives | Rule: objectives are measurable; vague objectives are corrected at review | TC-SA-05-04-014 |
| 4.2 Category Descriptions and Objectives | Rule: the content is shown on the category's catalog page; it is the category's public communication | TC-SA-05-04-013 |
| 4.2 Category Descriptions and Objectives | Rule: updates follow the offerings: as the category's scope changes, the description/objectives are revised | TC-SA-05-04-015 |
| 4.2 Category Descriptions and Objectives | Rule: the set is reviewed for consistency across categories (tone, accuracy, measurability) | TC-SA-05-04-014 |
| 4.2 Category Descriptions and Objectives | Rule: description/objective changes are audit-logged with the category and timestamp | TC-SA-05-04-016 |
| 4.3 Industry-Relevant Skill Tags | Skill tag set: the industry-relevant skills a category develops | TC-SA-05-04-017 |
| 4.3 Industry-Relevant Skill Tags | Tagging a category with its skill tags (multiple per category) | TC-SA-05-04-018 |
| 4.3 Industry-Relevant Skill Tags | Skill tag catalog: the platform's set of skill tags (consistent vocabulary) | TC-SA-05-04-019 |
| 4.3 Industry-Relevant Skill Tags | Browsing/filtering by skill: learners can find categories by the skills they build | TC-SA-05-04-020 |
| 4.3 Industry-Relevant Skill Tags | Tag relevance review: the tags are checked for industry relevance and accuracy | TC-SA-05-04-021 |
| 4.3 Industry-Relevant Skill Tags | Tag update as industry skills evolve | TC-SA-05-04-022 |
| 4.3 Industry-Relevant Skill Tags | Audit logging of skill tag changes | TC-SA-05-04-023 |
| 4.3 Industry-Relevant Skill Tags | Rule: skill tags come from a consistent catalog vocabulary; the same skill is tagged identically across categories | TC-SA-05-04-019 |
| 4.3 Industry-Relevant Skill Tags | Rule: tags are industry-relevant and accurate; they are reviewed and updated as skills evolve | TC-SA-05-04-021 |
| 4.3 Industry-Relevant Skill Tags | Rule: browsing/filtering by skill is supported: a skill surfaces the categories that develop it | TC-SA-05-04-020 |
| 4.3 Industry-Relevant Skill Tags | Rule: a category can have multiple skill tags; the set represents the skills it develops | TC-SA-05-04-018 |
| 4.3 Industry-Relevant Skill Tags | Rule: an outdated or inaccurate tag is replaced, not left silently | TC-SA-05-04-024 |
| 4.3 Industry-Relevant Skill Tags | Rule: skill tag changes are audit-logged with the category, tags, and timestamp | TC-SA-05-04-023 |

## 4.1 Create Major Categories (IT, Business, Languages, Creative)

### TC-SA-05-04-001 — Create a major category with name, description, and status
**Type:** Positive
**Covers:** 4.1 → Create a major category: name, description, and status
**Preconditions:** The platform launches its professional offerings.
**Steps:**
1. Open Category Management.
2. Create a major category: name "IT", a short description, and status active.
3. Save and verify the category appears in the list.
**Expected Result:** The major category is created with its identity and status; it appears in the list as the top level of the professional catalog.
**Priority:** Critical

### TC-SA-05-04-002 — The major category set (IT, Business, Languages, Creative, and others as offered)
**Type:** Positive
**Covers:** 4.1 → The major category set (IT, Business, Languages, Creative, and others as offered)
**Preconditions:** The professional catalog is being set up.
**Steps:**
1. Create the major categories: IT, Business, Languages, and Creative.
2. Verify the set is complete and each is the top level of the professional catalog.
**Expected Result:** The major category set (IT, Business, Languages, Creative) is established as the top level of the professional catalog.
**Priority:** High

### TC-SA-05-04-003 — The category list shows the count of sub-categories and courses under each; an empty category is visible
**Type:** Positive
**Covers:** 4.1 → Category list with the count of sub-categories and courses under each; Rule: the category list shows the sub-category and course counts, so an empty category is visible
**Preconditions:** Categories exist with varying sub-category and course counts; one is empty.
**Steps:**
1. Open the category list.
2. Verify each category shows the count of sub-categories and courses under it.
3. Verify the empty category is visible (counts of zero).
**Expected Result:** The category list shows the sub-category and course counts; the empty category is visible.
**Priority:** High

### TC-SA-05-04-004 — Category status: active categories are browsable; inactive categories are not offered
**Type:** Negative
**Covers:** 4.1 → Category status: active categories are browsable; inactive categories are not offered
**Preconditions:** Category A is active; Category B is inactive (not yet offered).
**Steps:**
1. As a learner, browse the professional catalog.
2. Verify Category A is browsable and Category B is not offered.
**Expected Result:** The active category is browsable; the inactive category is not offered.
**Priority:** Critical

### TC-SA-05-04-005 — Distinction from the academic hierarchy: professional categories are a separate organizing tree from boards/grades/subjects
**Type:** Edge
**Covers:** 4.1 → Distinction from the academic hierarchy: professional categories are a separate organizing tree from boards/grades/subjects; Rule: major categories are the top level of the professional catalog; they are distinct from the academic hierarchy (boards/grades/subjects)
**Preconditions:** The professional category tree and the academic board/grade/subject hierarchy both exist.
**Steps:**
1. Verify the professional categories form a separate tree from the academic hierarchy.
2. Verify a course organized under a professional category does not appear in the academic tree (and vice versa).
**Expected Result:** The professional categories are a separate organizing tree — distinct from boards/grades/subjects.
**Priority:** High

### TC-SA-05-04-006 — Category ordering for display: the order they appear in the catalog is maintained
**Type:** Positive
**Covers:** 4.1 → Category ordering for display; Rule: display order is maintained for the catalog presentation
**Preconditions:** The major categories exist.
**Steps:**
1. Set the display order for the categories (e.g., IT, Business, Languages, Creative).
2. Verify the catalog presents them in the set order.
**Expected Result:** The categories appear in the catalog in the configured display order.
**Priority:** Medium

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

### TC-SA-05-04-008 — An inactive category is preserved (activatable later); deletion is for categories with no dependencies
**Type:** Negative
**Covers:** 4.1 → Rule: an inactive category is not browsable but is preserved (activatable later); deletion is for categories with no dependencies
**Preconditions:** Category B is inactive with sub-categories and courses; Category C is empty (no dependencies).
**Steps:**
1. Attempt to delete Category B and verify it is not offered cleanly (it has dependencies).
2. Activate Category B later and verify it is browsable without re-creating it.
3. Delete Category C (no dependencies) and verify it is removed.
**Expected Result:** The inactive category with dependencies is preserved and activatable; the empty category is deleted — deletion is reserved for no-dependency categories.
**Priority:** High

### TC-SA-05-04-009 — A course is organized under the professional category tree or the academic tree, not both ambiguously
**Type:** Negative
**Covers:** 4.1 → Rule: a course is organized under the professional category tree or the academic tree, not both ambiguously (the context is explicit)
**Preconditions:** A course is being organized.
**Steps:**
1. Attempt to organize the course under both the professional category tree and the academic tree.
2. Verify the context is explicit (one or the other, not both ambiguously).
**Expected Result:** The course is organized under one context or the other — the context is explicit, not ambiguous.
**Priority:** High

## 4.2 Category Descriptions and Objectives

### TC-SA-05-04-010 — Category description: what the category covers, in learner-facing terms
**Type:** Positive
**Covers:** 4.2 → Category description: what the category covers, in learner-facing terms
**Preconditions:** The IT category exists.
**Steps:**
1. Write the IT category's description (what IT learning on the platform covers).
2. Save and verify the description is stored in learner-facing terms.
**Expected Result:** The category description is written in learner-facing terms and stored.
**Priority:** High

### TC-SA-05-04-011 — Category objectives: what a learner achieves by completing the category's learning
**Type:** Positive
**Covers:** 4.2 → Category objectives: what a learner achieves by completing the category's learning
**Preconditions:** The IT category exists.
**Steps:**
1. Write the IT category's objectives (e.g., foundational programming, web development, data skills).
2. Save and verify the objectives are stored.
**Expected Result:** The category objectives (what a learner achieves) are written and stored.
**Priority:** High

### TC-SA-05-04-012 — Description/objective authoring in clear, measurable terms; learner-facing, not internal jargon
**Type:** Positive
**Covers:** 4.2 → Description/objective authoring in clear, measurable terms; Rule: the description and objectives are learner-facing; they are written for the audience, not internally
**Preconditions:** A category's description and objectives are being authored.
**Steps:**
1. Author the description and objectives in clear, learner-facing terms (no internal jargon).
2. Verify the objectives are measurable.
**Expected Result:** The description and objectives are clear, learner-facing, and measurable — not internal jargon.
**Priority:** Medium

### TC-SA-05-04-013 — Visibility: the description and objectives are shown in the category's catalog page
**Type:** Positive
**Covers:** 4.2 → Visibility: the description and objectives are shown in the category's catalog page; Rule: the content is shown on the category's catalog page; it is the category's public communication
**Preconditions:** A category's description and objectives are set.
**Steps:**
1. As a learner, browse to the category's catalog page.
2. Verify the description and objectives are shown.
**Expected Result:** The description and objectives are shown on the category's catalog page — the category's public communication.
**Priority:** High

### TC-SA-05-04-014 — Review: the set is reviewed for accuracy, appeal, and consistency; vague objectives are corrected
**Type:** Negative
**Covers:** 4.2 → Review: the set is reviewed for accuracy and appeal; Rule: objectives are measurable; vague objectives are corrected at review; Rule: the set is reviewed for consistency across categories (tone, accuracy, measurability)
**Preconditions:** The categories' descriptions and objectives are reviewed; one objective is vague.
**Steps:**
1. Review the set for consistency of tone, accuracy, and measurability across categories.
2. Identify the vague (not measurable) objective and route it for rewriting.
**Expected Result:** The set is reviewed for consistency; the vague objective is routed for rewriting so the set is strong.
**Priority:** Medium

### TC-SA-05-04-015 — Update as the category's offerings evolve: the description/objectives are revised as the scope changes
**Type:** Positive
**Covers:** 4.2 → Update as the category's offerings evolve; Rule: updates follow the offerings: as the category's scope changes, the description/objectives are revised
**Preconditions:** A category's offerings expand (new sub-categories added).
**Steps:**
1. Add new sub-categories to the category.
2. Update the description and objectives to reflect the broader scope.
3. Verify the updated content is shown on the catalog page.
**Expected Result:** The description and objectives are revised to reflect the broader scope as the offerings evolve.
**Priority:** Medium

### TC-SA-05-04-016 — Description/objective changes are audit-logged with the category and timestamp
**Type:** Positive
**Covers:** 4.2 → Audit logging of description/objective changes; Rule: description/objective changes are audit-logged with the category and timestamp
**Preconditions:** A category's description and objectives have been changed.
**Steps:**
1. Open the audit trail and filter by "category description".
2. Verify the entry shows the category and the timestamp.
**Expected Result:** The description/objective change is audit-logged with the category and timestamp.
**Priority:** Critical

## 4.3 Industry-Relevant Skill Tags

### TC-SA-05-04-017 — Skill tag set: the industry-relevant skills a category develops
**Type:** Positive
**Covers:** 4.3 → Skill tag set: the industry-relevant skills a category develops
**Preconditions:** The IT category exists.
**Steps:**
1. Define the IT category's skill tag set: programming, web development, data analysis, cybersecurity fundamentals.
2. Verify the skill tags are associated with the category.
**Expected Result:** The category's skill tag set (the industry-relevant skills it develops) is defined.
**Priority:** High

### TC-SA-05-04-018 — Tagging a category with its skill tags (multiple per category)
**Type:** Positive
**Covers:** 4.3 → Tagging a category with its skill tags (multiple per category); Rule: a category can have multiple skill tags; the set represents the skills it develops
**Preconditions:** The Business category exists.
**Steps:**
1. Tag the Business category with multiple skill tags (project management, finance fundamentals, communication).
2. Verify the category shows all its skill tags.
**Expected Result:** The category is tagged with multiple skill tags; the set represents the skills it develops.
**Priority:** High

### TC-SA-05-04-019 — Skill tag catalog: the platform's set of skill tags (consistent vocabulary); the same skill is tagged identically
**Type:** Positive
**Covers:** 4.3 → Skill tag catalog: the platform's set of skill tags (consistent vocabulary); Rule: skill tags come from a consistent catalog vocabulary; the same skill is tagged identically across categories
**Preconditions:** The platform's skill tag catalog exists.
**Steps:**
1. Select tags from the catalog for two different categories.
2. Verify the same skill is tagged the same way (identically) in both categories.
**Expected Result:** The tags come from a consistent catalog vocabulary — the same skill is tagged identically across categories.
**Priority:** High

### TC-SA-05-04-020 — Browsing/filtering by skill: a skill surfaces the categories that develop it
**Type:** Positive
**Covers:** 4.3 → Browsing/filtering by skill: learners can find categories by the skills they build; Rule: browsing/filtering by skill is supported: a skill surfaces the categories that develop it
**Preconditions:** Multiple categories are tagged with the skill "data analysis".
**Steps:**
1. As a learner, filter the catalog for the skill "data analysis".
2. Verify the categories that develop the skill are surfaced, with the tag visible.
**Expected Result:** Filtering by skill surfaces the categories that develop it — browsing/filtering by skill works.
**Priority:** High

### TC-SA-05-04-021 — Tag relevance review: the tags are checked for industry relevance and accuracy
**Type:** Positive
**Covers:** 4.3 → Tag relevance review: the tags are checked for industry relevance and accuracy; Rule: tags are industry-relevant and accurate; they are reviewed and updated as skills evolve
**Preconditions:** A category's skill tags are reviewed.
**Steps:**
1. Review the tags for industry relevance (the skills are current and accurately represent what the category builds).
2. Verify the tags are accurate.
**Expected Result:** The tags are reviewed for industry relevance and accuracy — they are current and accurate.
**Priority:** Medium

### TC-SA-05-04-022 — Tag update as industry skills evolve: a new in-demand skill is added to the catalog and applied
**Type:** Positive
**Covers:** 4.3 → Tag update as industry skills evolve
**Preconditions:** A new in-demand skill emerges.
**Steps:**
1. Add the new skill to the catalog.
2. Apply the tag to the relevant categories.
3. Verify the tag is browsable/filterable.
**Expected Result:** The new skill is added to the catalog and applied to the relevant categories — tags evolve with industry skills.
**Priority:** Medium

### TC-SA-05-04-023 — Skill tag changes are audit-logged with the category, tags, and timestamp
**Type:** Positive
**Covers:** 4.3 → Audit logging of skill tag changes; Rule: skill tag changes are audit-logged with the category, tags, and timestamp
**Preconditions:** Skill tags have been added, replaced, and removed.
**Steps:**
1. Open the audit trail and filter by "skill tag".
2. Verify entries show the category, the tags, and the timestamp.
**Expected Result:** The skill tag changes are audit-logged with the category, tags, and timestamp.
**Priority:** Critical

### TC-SA-05-04-024 — An outdated or inaccurate tag is replaced, not left silently
**Type:** Negative
**Covers:** 4.3 → Rule: an outdated or inaccurate tag is replaced, not left silently
**Preconditions:** A category has an outdated skill tag.
**Steps:**
1. Identify the outdated tag during review.
2. Replace it with the current, accurate tag.
3. Verify the replacement is recorded (not left silently).
**Expected Result:** The outdated tag is replaced with the current one and the change is recorded — not left silently.
**Priority:** High
