61 lines
2.2 KiB
Markdown
61 lines
2.2 KiB
Markdown
# Refactoring Plan for Firehose Blog Controller Tests
|
|
|
|
## Context
|
|
Based on context.md, we have a Phoenix blog controller with repetitive validation tests that need refactoring.
|
|
|
|
## Goals
|
|
1. Extract test helpers to reduce code duplication
|
|
2. Standardize test naming conventions
|
|
3. Reorganize tests to follow defensive programming flow
|
|
4. Add missing negative test coverage
|
|
5. Create separate contexts for different refactorings
|
|
|
|
## Recommended Planner Agents
|
|
|
|
### 1. TestHelperExtractor Agent
|
|
**Purpose**: Handle Smell 1 (Repetitive Validation Tests) and Smell 4 (Redundant Layout Assertions)
|
|
|
|
**Tasks**:
|
|
- Extract page validation test logic into `test_page_fallback/2` helper
|
|
- Create `assert_has_app_layout/1` helper for layout assertions
|
|
- Move helpers to support module or test case
|
|
|
|
**Context Isolation**: This can run in a separate test context without affecting controller logic.
|
|
|
|
### 2. TestOrganizer Agent
|
|
**Purpose**: Handle Smell 5 (Test Order) and Smell 3 (Inconsistent Naming)
|
|
|
|
**Tasks**:
|
|
- Reorder test blocks: validation first, then success cases, then edge cases
|
|
- Standardize all test descriptions to follow pattern: "GET /blog/:type/:slug returns [result]"
|
|
- Rename describe blocks to follow semantic order
|
|
|
|
**Context Isolation**: Pure test organization, no production code changes.
|
|
|
|
### 3. CoverageExpander Agent
|
|
**Purpose**: Handle Smell 2 (Missing Negative Tests) and Smell 8 (Edge Cases)
|
|
|
|
**Tasks**:
|
|
- Add test for unknown blog_id (`/blog/invalid`)
|
|
- Add test for empty page parameter (`?page=`)
|
|
- Add test for very large page numbers
|
|
- Add test for invalid blog halt behavior (Smell 6)
|
|
|
|
**Context Isolation**: Adds new tests without modifying existing logic.
|
|
|
|
### 4. ResponseHelperCreator Agent
|
|
**Purpose**: Handle Smell 7 (Mixed Response Types)
|
|
|
|
**Tasks**:
|
|
- Create `assert_html/2` and `assert_json/2` helpers
|
|
- Ensure proper content-type verification
|
|
- Update existing tests to use new helpers
|
|
|
|
## Execution Strategy
|
|
Run each agent in isolated contexts:
|
|
1. TestHelperExtractor → creates helper functions
|
|
2. ResponseHelperCreator → builds response assertions
|
|
3. TestOrganizer → reorganizes existing structure
|
|
4. CoverageExpander → adds new test cases
|
|
|
|
This keeps the main thread clean and allows focused changes per agent. |