Skip to content

refactor(factories): improve phone number generation logic

Praneeth Ashish requested to merge updated-numbers-seeding-database into develop

refactor(scope): short description

Current Change: refactor(factories): improve phone number generation logic

Description

This merge request refactors the phone number generation logic in the user factory to generate valid Indian phone numbers without formatting characters.

Changes Made

  • Phone Number Format: Changed from +91 XXXXX XXXXX format to XXXXXXXXXX (10 digits only)
  • Validation Improvement: First digit now restricted to valid Indian mobile prefixes (9, 8, 7, 6)
  • Code Formatting: Applied consistent code formatting throughout user_factory.py
  • Documentation: Updated README.md to fix docker compose command syntax

Files Modified

  • scripts/factories/user_factory.py - Updated _generate_indian_phone() method
  • README.md - Fixed docker compose command documentation

Checklist

  • Code has been refactored for clarity, maintainability, or performance.
  • No functional changes have been introduced (phone numbers still generated, just in different format).
  • All existing tests are passing.
  • Code adheres to project coding standards (PEP 8 formatting applied).

Technical Details

Before

def _generate_indian_phone(self) -> str:
    """Generate Indian phone number in format +91 XXXXX XXXXX."""
    number = "".join([str(random.randint(0, 9)) for _ in range(10)])
    return f"+91 {number[:5]} {number[5:]}"

After

def _generate_indian_phone(self) -> str:
    """Generate Indian phone number in format XXXXXXXXXX."""
    first_digit = str(random.choice([9, 8, 7, 6]))
    remaining_digits = "".join([str(random.randint(0, 9)) for _ in range(9)])
    number = first_digit + remaining_digits
    return number

Benefits

  1. Database Compatibility: Removes formatting characters that may cause issues with phone number validation
  2. Realistic Data: First digit restricted to valid Indian mobile prefixes
  3. Consistency: Matches expected phone number format for authentication endpoints
  4. Cleaner Code: Improved formatting and readability throughout the factory file

Related Issue(s)

Closes #27 (closed) fix(database): generate unique phone numbers in seed data

Commit

  • Commit Hash: c51f17a40f1b3051b5abf922ea434dcfc4e96712
  • Branch: updated-numbers-seeding-database
  • Commit Message: "Changes in phone numbers generation logic"

Merge request reports

Loading