update blog post, and run credo with 'pi'
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user