rails-tdd

star 3

TDD workflow for Rails applications. Use when implementing features or fixing bugs. Provides Red-Green cycle with test decision framework.

sevos By sevos schedule Updated 1/18/2026

name: rails-tdd description: TDD workflow for Rails applications. Use when implementing features or fixing bugs. Provides Red-Green cycle with test decision framework.

Rails TDD Workflow

Overview

This skill provides development workflows for Ruby on Rails applications. It defines methodologies for different types of engineering work.

Workflows

Implementation Workflow (TDD Red-Green)

When implementing features or fixing bugs, follow the Test-Driven Development cycle.

RED Phase

Write failing tests FIRST:

  • Use fixtures for test data (check test/fixtures/ for existing patterns)
  • Refer to rails-basecamp-engineer skill references for test patterns
  • Run bin/ci to confirm tests fail for the RIGHT reason
  • Do NOT proceed until you have a failing test

GREEN Phase

Write the MINIMAL code to make tests pass:

  • Refer to rails-basecamp-engineer skill references for implementation patterns
  • Run bin/ci - do NOT proceed until all tests pass
  • Avoid over-engineering; implement only what's needed for the test

Error Handling

If bin/ci fails:

  • Read the error output carefully
  • Fix the failing tests or implementation
  • Do NOT proceed to the next phase until CI is green
  • If stuck, explain the issue and ask for guidance

If you discover additional work needed:

  • Note the discovery for the user
  • Continue with current task unless blocking

Completion Criteria

  • All tests pass (bin/ci or bin/rails test)
  • Implementation is minimal and focused
  • Code follows patterns from rails-basecamp-engineer references

Test Decision Framework

Rails Test Types

Directory Base Class Purpose
test/models/ ActiveSupport::TestCase Model logic, validations, scopes
test/controllers/ ActionDispatch::IntegrationTest Controller actions, HTTP responses
test/integration/ ActionDispatch::IntegrationTest Multi-controller workflows
test/system/ ActionDispatch::SystemTestCase Full browser tests (Capybara)
test/helpers/ ActionView::TestCase View helper methods
test/mailers/ ActionMailer::TestCase Email generation and content
test/jobs/ ActiveJob::TestCase Background job behavior
test/channels/ ActionCable::Channel::TestCase WebSocket connections

What to Test Where

Model tests (test/models/):

  • Custom methods (e.g., User#full_name, Order#total)
  • POROs and service objects
  • Complex scopes with business logic
  • State machines and transitions
  • Callbacks with side effects

Controller tests (test/controllers/):

  • HTTP response codes and redirects
  • Authentication/authorization checks
  • Parameter handling and strong params
  • Flash messages and session state

System tests (test/system/) - use sparingly:

  • Critical user paths (signup, checkout, login)
  • JavaScript-dependent features
  • Multi-step workflows requiring browser state

Mailer tests (test/mailers/):

  • Email subject, recipients, and headers
  • Email body content and dynamic values
  • Attachments
  • Conditional delivery logic

Job tests (test/jobs/):

  • Job arguments and enqueueing
  • Job execution logic
  • Retries and error handling
  • Side effects (database changes, API calls)

Skip tests for (covered implicitly):

  • validates :name, presence: true - framework behavior
  • Simple has_many/belongs_to - framework behavior
  • Delegations - framework behavior

Decision Matrix

Change Type Models Controllers System Mailers Jobs
Custom model method - - - -
PORO/service object - - - -
Controller action - - - -
API endpoint - - - -
User-facing feature - critical paths - -
JS-dependent feature - - - -
Multi-step workflow - - - -
Background job - - - -
Mailer - - - -
Bug fix where bug lives + regression - - -
Install via CLI
npx skills add https://github.com/sevos/claude-code-marketplace --skill rails-tdd
Repository Details
star Stars 3
call_split Forks 1
navigation Branch main
article Path SKILL.md
More from Creator