10 KiB
Project Mycelium - Complete Mock Data Removal Plan
Date: 2025-08-14
Task: Remove all code-based mock data and enforce persistent-only data
Status: Implementation Active
Overview
Despite the architecture documentation claiming "100% Mock Data Elimination," extensive mock data infrastructure remains throughout the system. This plan systematically removes all 129+ mock patterns identified while ensuring the application continues to function with persistent storage only.
Current Mock Data Patterns Identified
Critical Mock Infrastructure:
- MockUserData Factory Methods:
user1()throughuser5()insrc/models/user.rs - MockDataService Singleton: Complete service in
src/services/mock_data.rs - User.mock_data Field: Extensively used across controllers
- MockPaymentGateway: Mock payment processing in
src/services/order.rs - Mock-dependent Controllers: Rental, Pool, Dashboard controllers
- Mock Initialization: User persistence still initializes with mock data
Phase 1: Infrastructure & Data Model Changes ✅
Goal: Establish persistent-only data patterns and remove mock dependencies
1.1 Remove MockUserData Factory Methods
- Delete
user1()throughuser5()methods fromsrc/models/user.rs - Replace inline mock arrays with
Vec::new()defaults - Ensure all fields have
#[serde(default)]for backward compatibility - Update
MockUserData::new_user()to return minimal default structures
Files to modify:
src/models/user.rs(lines 1311-2801)
1.2 Remove User.mock_data Field Dependency
- Update User struct to make mock_data field optional/deprecated
- Remove mock_data field access from all controllers
- Route wallet balance, transactions through UserPersistence only
- Add transition methods to extract data from persistent storage
Files to modify:
src/models/user.rs(User struct definition)src/models/builders.rs(UserBuilder)
1.3 Remove MockDataService Infrastructure
- Delete entire
src/services/mock_data.rsfile - Remove MockDataService imports across all controllers
- Update
src/services/mod.rsto remove mock_data module - Replace marketplace config with minimal persistent config
Files to modify:
src/services/mock_data.rs(DELETE)src/services/mod.rs- All controllers importing MockDataService
Phase 2: Controller Refactoring ✅
Goal: Route all data operations through UserPersistence only
2.1 Dashboard Controller Overhaul
- Remove all
mock_datafield access insrc/controllers/dashboard.rs - Route wallet balance through persistent storage (lines 44-55)
- Replace mock service/app statistics with persistent data aggregation
- Update service provider, farmer, app provider data initialization
- Remove mock balance updates in wallet operations
Files to modify:
src/controllers/dashboard.rs(lines 44-55, 75-279, 2698-3059, 3328-3338, 4327-4330, 4803-4813)
2.2 Rental Controller Cleanup
- Remove MockDataService dependencies (line 7)
- Replace mock product lookups with persistent storage queries
- Remove mock balance deduction logic (lines 82-174, 242-317, 384-401)
- Update rental operations to use UserPersistence only
Files to modify:
src/controllers/rental.rs(lines 7, 35-36, 82-174, 194-196, 242-317, 337-339, 384-401, 430-432)
2.3 Pool Controller Refactoring
- Remove
mock_datausage (lines 92-136, 207-228) - Route all transaction and balance operations through UserPersistence
- Replace mock transaction history updates
Files to modify:
src/controllers/pool.rs(lines 92-136, 207-228)
2.4 Marketplace Controller Cleanup
- Remove MockDataService usage (lines 6, 127-131, 726-742)
- Replace mock marketplace config with minimal persistent config
- Remove mock product registration for user apps
Files to modify:
src/controllers/marketplace.rs(lines 6, 127-131, 706-742)
Phase 3: Service Layer Cleanup ✅
Goal: Eliminate remaining mock services and payment gateways
3.1 Remove MockPaymentGateway
- Delete
MockPaymentGatewayfrom order service (lines 82-84, 1119-1224) - Replace with persistent payment method handling only
- Remove mock payment method fallbacks (lines 606-615, 1225-1227)
- Update payment processing to use real gateways only
Files to modify:
src/services/order.rs(lines 82-84, 606-615, 1119-1224, 1225-1227)
3.2 User Persistence Cleanup
- Remove
initialize_user_with_mock_balancemethod (lines 349-370) - Replace with pure persistent data initialization
- Ensure all new users get default empty structures, not mock data
- Update session manager to not apply mock data
Files to modify:
src/services/user_persistence.rs(lines 349-370)src/services/session_manager.rs(lines 141-158)
3.3 Farmer Service Mock Cleanup
- Remove mock product generation (lines 432-454)
- Route marketplace product creation through persistent storage only
- Remove MockDataService dependencies
Files to modify:
src/services/farmer.rs(lines 432-454)
3.4 Product Service Mock Dependencies
- Remove MockDataService usage (lines 3, 157-161, 398-401)
- Ensure product aggregation uses only fixtures and persistent data
- Remove mock product and category fallbacks
Files to modify:
src/services/product.rs(lines 3, 157-161, 398-401)
Phase 4: Configuration & Guards ✅
Goal: Enforce persistent-only operation and prevent mock fallbacks
4.1 Production Guards Implementation
- Remove enable_mock_data configuration option
- Add compile-time checks to prevent mock usage
- Remove all conditional mock paths from production code
- Update configuration to make persistent-only the default
Files to modify:
src/config/builder.rs(lines 28-30, 77-79, 105, 157-166, 225-227, 289, 343-346, 493-530)
4.2 Model Updates for Persistence
- Ensure all persistent data structures have
#[serde(default)] - Remove MockUserData dependencies from builders
- Update User model to not require mock_data field
Files to modify:
src/models/builders.rs(lines 12, 269, 307-309, 323, 1026, 1053-1101, 1219-1255)src/models/currency.rs(lines 34, 161, 175, 190, 206, 221)src/models/order.rs(lines 88-89)
4.3 Authentication & Other Controllers
- Remove MockUserData from gitea auth controller (lines 7, 161)
- Update wallet controller to clear mock data field (lines 93-94)
Files to modify:
src/controllers/gitea_auth.rs(lines 7, 161)src/controllers/wallet.rs(lines 93-94)src/controllers/order.rs(lines 641-643)
Phase 5: Service Dependencies & Grid ✅
Goal: Clean up remaining service mock dependencies
5.1 Grid Service Mock Cleanup
- Remove mock grid data creation (lines 97, 194-196)
- Replace with proper error handling for missing grid data
Files to modify:
src/services/grid.rs(lines 97, 194-196)
5.2 Pool Service Analytics
- Remove mock analytics generation (lines 64, 182-183)
- Replace with real analytics from persistent data
Files to modify:
src/services/pool_service.rs(lines 64, 182-183)
Phase 6: Verification & Testing ✅
Goal: Ensure system works correctly and update documentation
6.1 Compilation & Runtime Testing
- Run
cargo checkto verify no compilation errors - Test with
APP_ENABLE_MOCKS=0to ensure no runtime mock dependencies - Verify all dashboard flows work with persistent data
- Test marketplace functionality end-to-end
6.2 Test Updates
- Update test files to remove mock dependencies
- Ensure integration tests use fixture JSON instead of code-based mocks
- Update mock gating tests to reflect new reality
Files to modify:
tests/service_booking_integration_test.rs(line 112)tests/mock_gating.rs(lines 8-39)
6.3 Final Verification
- Search for remaining mock patterns:
grep -r "Mock\|mock_\|demo_\|sample_" src/ - Verify no
pub fn user[0-9]+patterns remain - Ensure all persistent data operations work correctly
Phase 7: Documentation Updates ✅
Goal: Update documentation to reflect actual implementation
7.1 Architecture Documentation
- Update
marketplace-architecture.mdProgress Update section - Add note about code-based mock data removal completion
- Document persistent-data-only architecture
Files to modify:
docs/dev/design/current/marketplace-architecture.md
7.2 TODO Documentation
- Update
marketplace-todo.mdto mark task completed - Remove mock cleanup items from todo list
- Add any follow-up persistence improvements needed
Files to modify:
docs/dev/design/current/marketplace-todo.md
Implementation Strategy
Critical Success Factors:
- Backward Compatibility: All persistent structures must have
#[serde(default)] - Default Values: Replace mock arrays with sensible defaults (
Vec::new(),None,0) - Error Handling: Add proper error handling for missing data instead of mock fallbacks
- Gradual Migration: Keep User.mock_data field optional during transition
- Testing: Verify each phase before proceeding to next
Risk Mitigation:
- Compilation Safety: Check
cargo checkafter each major change - Data Safety: Ensure existing user_data/ JSON files continue to work
- Functionality Safety: Test core flows after each controller update
- Rollback Plan: Git commits for each phase allow easy rollback
Acceptance Criteria
- ✅
cargo checkpasses with zero compilation errors - ✅ Application starts and runs with
APP_ENABLE_MOCKS=0 - ✅ No code-based mock user factories remain in codebase
- ✅ Dashboard displays persistent data or proper empty states
- ✅ All marketplace flows function using persistent storage only
- ✅ No occurrences of mock patterns in grep search
- ✅ Architecture documentation reflects actual implementation
Progress Tracking
This document will be updated with checkmarks (✅) as each section is completed during implementation.