BMAD-METHOD/expansion-packs/bmad-tdd-methodology/examples/tdd-demo/1.1-user-validation.md

5.1 KiB

Story 1.1: User Email Validation

Story Metadata

story:
  epic: '1'
  number: '1'
  title: 'User Email Validation'
  status: 'ready'
  priority: 'high'

# TDD Configuration
tdd:
  status: 'red' # Current phase: red|green|refactor|done
  cycle: 1
  coverage_target: 90.0
  tests:
    - id: 'UV-001'
      name: 'should validate correct email format'
      type: unit
      status: failing
      file_path: 'tests/user-validator.test.js'
    - id: 'UV-002'
      name: 'should reject invalid email format'
      type: unit
      status: failing
      file_path: 'tests/user-validator.test.js'
    - id: 'UV-003'
      name: 'should handle edge cases'
      type: unit
      status: failing
      file_path: 'tests/user-validator.test.js'

Story Description

As a System Administrator
I want to validate user email addresses
So that only users with valid email formats can register

Context

This is a foundational feature for user registration. We need robust email validation that follows RFC standards while being user-friendly. This will be used by the registration system and user profile updates.

Acceptance Criteria

Feature: User Email Validation

Scenario: Valid email formats are accepted
  Given a user provides an email address
  When the email has correct format with @ symbol and domain
  Then the validation should return true

Scenario: Invalid email formats are rejected
  Given a user provides an invalid email address
  When the email lacks @ symbol or proper domain format
  Then the validation should return false with appropriate error message

Scenario: Edge cases are handled properly
  Given a user provides edge case email formats
  When validation is performed on emails with special characters or unusual formats
  Then the system should handle them according to RFC standards

Technical Requirements

Functional Requirements

  • Validate email format using RFC-compliant rules
  • Return boolean result with error details when invalid
  • Handle common edge cases (special characters, multiple @, etc.)
  • Performance: validation should complete in < 1ms

Non-Functional Requirements

  • Performance: < 1ms validation time per email
  • Security: Prevent injection attacks via email input
  • Reliability: 99.9% accuracy on email format validation
  • Maintainability: Clear error messages for debugging

TDD Test Plan (QA Agent Responsibility)

Test Strategy

  • Primary Test Type: unit
  • Mocking Approach: No external dependencies to mock
  • Test Data: Fixed test cases covering valid/invalid formats

Planned Test Scenarios

ID Scenario Type Priority AC Reference
UV-001 Valid email formats accepted unit P0 AC1
UV-002 Invalid formats rejected unit P0 AC2
UV-003 Edge cases handled unit P1 AC3
UV-004 Performance requirements met unit P2 NFR

TDD Progress

Current Phase: RED

Cycle: 1 Last Updated: 2025-01-12

Red Phase - Cycle 1

Date: 2025-01-12 Agent: Quinn (QA Agent)

Tests Written:

  • UV-001: should validate correct email format (FAILING )
  • UV-002: should reject invalid email format (FAILING )
  • UV-003: should handle edge cases (FAILING )

Test Files:

  • tests/user-validator.test.js

Next Step: Dev Agent to implement minimal code to make tests pass


Implementation Tasks (Dev Agent)

Primary Tasks

  • Create UserValidator class
  • Implement email validation logic
  • Handle error cases and edge cases

Subtasks

  • Set up basic class structure
  • Implement regex-based validation
  • Add error message generation
  • Performance optimization

Definition of Done

TDD-Specific DoD

  • Tests written first (Red phase completed)
  • All tests passing (Green phase completed)
  • Code refactored for quality (Refactor phase completed)
  • Test coverage meets target (90%)
  • All external dependencies properly mocked (N/A for this story)
  • No features implemented without corresponding tests

General DoD

  • All acceptance criteria met
  • Code follows project standards
  • Documentation updated
  • Ready for review

Dev Agent Record

Implementation Notes

(Dev agent will document implementation decisions here)

TDD Cycle Log

(Automatic tracking of Red-Green-Refactor progression)

Cycle 1:

  • Red Phase: 2025-01-12 - 3 failing tests written
  • Green Phase: (pending)
  • Refactor Phase: (pending)

File List

(Dev agent will list all files created/modified)

  • tests/user-validator.test.js (created)
  • (implementation files will be added during GREEN phase)

Test Execution Log

# RED phase test runs will be logged here

QA Results

(QA agent will populate this during review)

Change Log

  • 2025-01-12: Story created from TDD template
  • 2025-01-12: Red phase completed - failing tests written

TDD Status: 🔴 RED Phase
Agent Assigned: Quinn (QA) → James (Dev)
Estimated Effort: 2 hours