diff --git a/BACKEND_TEST_PLAN.md b/BACKEND_TEST_PLAN.md new file mode 100644 index 0000000..bf0aaf3 --- /dev/null +++ b/BACKEND_TEST_PLAN.md @@ -0,0 +1,387 @@ +# Backend Test Plan + +## Overview +This test plan is designed for iterative execution using sub-agents, with each sub-agent handling a specific phase to avoid exceeding the 300,000 token context limit. Each phase focuses on a distinct subsystem and includes specific test cases and verification steps. + +## Test Phases + +### Phase 1: Database & Migration Tests +**Scope:** Alembic migrations, database schema, model relationships +**Sub-agent Task:** Verify all migrations run correctly and database schema is consistent + +#### Test Cases: +1. **Migration 000 (Empty)** + - Verify migration exists and is empty + - Check downgrade/upgrade functions exist + +2. **Migration 001 (Initial User Schema)** + - Run migration upgrade + - Verify all 16 tables created: + - `mtgonline_users` (base table) + - `mtgonline_decklist_files` (base table) + - `mtgonline_rooms` (base table) + - `user_sessions` + - `deck_versions` + - `game_replays` + - `replay_players` + - `game_outcomes` + - `user_statistics` + - `user_card_collection` + - `card_wishlist` + - `user_groups` + - `group_members` + - `group_chat_messages` + - `user_networks` + - `network_members` + - `user_preferences` + - `user_activity_log` + - Verify foreign key constraints + - Verify indexes created + - Verify unique constraints + - Run migration downgrade + - Verify all tables dropped + +3. **Migration 002 (User Deck Building Tables)** + - Run migration upgrade + - Verify tables created: + - `mtgonline_decklist_cards` + - `mtgonline_decklist_precedents` + - `mtgonline_decklist_suggestions` + - Verify foreign keys to `mtgonline_decklist_files` + - Run migration downgrade + - Verify tables dropped + +4. **Migration 003 (MTG Cards Table)** + - Run migration upgrade + - Verify `mtgonline_cards` table created + - Verify columns and indexes + - Run migration downgrade + - Verify table dropped + +5. **Migration 004 (Card Import Table)** + - Run migration upgrade + - Verify `mtgonline_card_imports` table created + - Verify foreign key to `mtgonline_users` + - Run migration downgrade + - Verify table dropped + +6. **Schema Consistency Checks** + - Verify all foreign keys reference existing tables + - Verify no circular dependencies + - Verify all tables have proper indexes + - Verify unique constraints are valid + +**Verification:** All migrations run successfully in order, schema is consistent, no orphaned foreign keys. + +--- + +### Phase 2: Model Layer Tests +**Scope:** SQLAlchemy models, relationships, validation +**Sub-agent Task:** Verify all model definitions are correct and consistent + +#### Test Cases: +1. **User Data Models (`app/models/user_data.py`)** + - Verify `User` model matches `mtgonline_users` table + - Verify all columns defined + - Verify relationships defined + - Check for missing fields + +2. **User Deck Models (`app/models/user_deck.py`)** + - Verify `DecklistFile`, `DecklistCard`, `DecklistPrecedent`, `DecklistSuggestion` models + - Verify foreign key relationships + - Verify cascade delete behavior + - Check for missing fields + +3. **Card Import Models (`app/models/user_card_import.py`)** + - Verify `CardImport` model + - Verify foreign key to `mtgonline_users` + - Check for missing fields + +4. **Game Models (`app/models/game.py`)** + - Verify `Game`, `GamePlayer`, `GameCard`, `GameAction`, `GameLog` models + - Verify relationships + - Check for missing fields + +5. **MTG Card Models (`app/models/mtg_card.py`)** + - Verify `MtgonlineCard`, `CardPriceHistory` models + - Verify relationships + - Check for missing fields + +6. **Model Consistency** + - Verify all models have proper `__tablename__` + - Verify all foreign keys reference correct tables + - Verify all relationships are bidirectional where needed + - Check for missing imports + - Verify model imports in `app/models/__init__.py` + +**Verification:** All models compile without errors, relationships are correct, no missing fields. + +--- + +### Phase 3: Schema Layer Tests +**Scope:** Pydantic schemas, request/response validation +**Sub-agent Task:** Verify all schema definitions are correct + +#### Test Cases: +1. **User Data Schemas (`app/schemas/user_data_schemas.py`)** + - Verify `UserCreate`, `UserUpdate`, `UserResponse` schemas + - Verify all required fields + - Check for missing validation + +2. **User Deck Schemas (`app/schemas/user_deck_schemas.py`)** + - Verify `DecklistFileCreate`, `DecklistFileUpdate`, `DecklistFileResponse` + - Verify `DecklistCardCreate`, `DecklistCardUpdate`, `DecklistCardResponse` + - Verify `DecklistPrecedentCreate`, `DecklistPrecedentUpdate`, `DecklistPrecedentResponse` + - Verify `DecklistSuggestionCreate`, `DecklistSuggestionUpdate`, `DecklistSuggestionResponse` + - Check for missing fields + +3. **Card Import Schemas (`app/schemas/card_import_schemas.py`)** + - Verify `CardImportCreate`, `CardImportResponse` + - Verify `CardImportStatusResponse`, `CardImportSummaryResponse` + - Check for missing fields + +4. **Game Schemas (`app/schemas/game_schemas.py`)** + - Verify `GameCreate`, `GameUpdate`, `GameResponse` + - Verify `GamePlayerCreate`, `GamePlayerResponse` + - Verify `GameCardCreate`, `GameCardResponse` + - Verify `GameActionCreate`, `GameActionResponse` + - Verify `GameLogCreate`, `GameLogResponse` + - Check for missing fields + +5. **MTG Card Schemas (`app/schemas/mtg_card_schemas.py`)** + - Verify `MtgonlineCardCreate`, `MtgonlineCardUpdate`, `MtgonlineCardResponse` + - Verify `CardPriceHistoryCreate`, `CardPriceHistoryResponse` + - Check for missing fields + +6. **Schema Consistency** + - Verify all schemas have proper `model_config` + - Verify required vs optional fields + - Check for missing imports + - Verify schema imports in `app/schemas/__init__.py` + +**Verification:** All schemas compile without errors, validation rules are correct, no missing fields. + +--- + +### Phase 4: Router Layer Tests +**Scope:** FastAPI routers, endpoint definitions, dependencies +**Sub-agent Task:** Verify all router definitions are correct + +#### Test Cases: +1. **User Data Router (`app/routers/user_data.py`)** + - Verify all endpoints defined + - Verify request/response schemas + - Verify dependencies (auth, etc.) + - Check for missing endpoints + +2. **Deck Router (`app/routers/decks.py`)** + - Verify all endpoints defined + - Verify request/response schemas + - Verify dependencies + - Check for missing endpoints + +3. **Card Import Router (`app/routers/card_import.py`)** + - Verify all endpoints defined + - Verify request/response schemas + - Verify dependencies + - Check for missing endpoints + +4. **Game Router (`app/routers/game.py`)** + - Verify all endpoints defined + - Verify request/response schemas + - Verify dependencies + - Check for missing endpoints + +5. **MTG Card Router (`app/routers/mtg_card.py`)** + - Verify all endpoints defined + - Verify request/response schemas + - Verify dependencies + - Check for missing endpoints + +6. **Router Consistency** + - Verify all routers imported in `app/main.py` + - Verify prefix paths are correct + - Verify tag assignments + - Check for missing imports + +**Verification:** All routers compile without errors, endpoints are properly defined, no missing imports. + +--- + +### Phase 5: Service Layer Tests +**Scope:** Business logic, service functions +**Sub-agent Task:** Verify all service implementations are correct + +#### Test Cases: +1. **User Service (`app/services/user_service.py`)** + - Verify all functions defined + - Verify function signatures + - Check for missing implementations + +2. **Deck Service (`app/services/deck_service.py`)** + - Verify all functions defined + - Verify function signatures + - Check for missing implementations + +3. **Card Import Service (`app/services/card_import_service.py`)** + - Verify all functions defined + - Verify function signatures + - Check for missing implementations + +4. **Game Service (`app/services/game_service.py`)** + - Verify all functions defined + - Verify function signatures + - Check for missing implementations + +5. **MTG Card Service (`app/services/mtg_card_service.py`)** + - Verify all functions defined + - Verify function signatures + - Check for missing implementations + +6. **Service Consistency** + - Verify all services imported where needed + - Verify function calls match implementations + - Check for missing imports + +**Verification:** All services compile without errors, functions are properly implemented, no missing imports. + +--- + +### Phase 6: Utility & Helper Tests +**Scope:** Utility functions, helpers, constants +**Sub-agent Task:** Verify all utility implementations are correct + +#### Test Cases: +1. **Auth Utilities (`app/utils/auth.py`)** + - Verify all functions defined + - Verify function signatures + - Check for missing implementations + +2. **Database Utilities (`app/utils/database.py`)** + - Verify all functions defined + - Verify function signatures + - Check for missing implementations + +3. **Error Handlers (`app/utils/errors.py`)** + - Verify all exception classes defined + - Verify error codes + - Check for missing exceptions + +4. **Constants (`app/utils/constants.py`)** + - Verify all constants defined + - Verify constant values + - Check for missing constants + +5. **Utility Consistency** + - Verify all utilities imported where needed + - Verify function calls match implementations + - Check for missing imports + +**Verification:** All utilities compile without errors, functions are properly implemented, no missing imports. + +--- + +### Phase 7: Configuration & Environment Tests +**Scope:** Settings, environment variables, configuration +**Sub-agent Task:** Verify all configuration is correct + +#### Test Cases: +1. **Settings (`app/core/settings.py`)** + - Verify all settings defined + - Verify default values + - Check for missing settings + +2. **Database Configuration (`app/core/database.py`)** + - Verify database URL configuration + - Verify async/sync engine setup + - Check for missing configuration + +3. **App Configuration (`app/main.py`)** + - Verify FastAPI app initialization + - Verify middleware setup + - Verify CORS configuration + - Check for missing configuration + +4. **Environment Consistency** + - Verify all settings used in code + - Verify environment variables match settings + - Check for missing configuration + +**Verification:** All configuration compiles without errors, settings are properly defined, no missing configuration. + +--- + +### Phase 8: Integration Tests +**Scope:** Cross-component integration, API consistency +**Sub-agent Task:** Verify all components work together correctly + +#### Test Cases: +1. **Router-Service Integration** + - Verify routers call correct service functions + - Verify service functions return correct types + - Check for integration issues + +2. **Service-Model Integration** + - Verify services use correct models + - Verify model operations are correct + - Check for integration issues + +3. **Schema-Router Integration** + - Verify routers use correct schemas + - Verify schemas match request/response + - Check for integration issues + +4. **Database-Model Integration** + - Verify models match database schema + - Verify migrations create correct tables + - Check for integration issues + +5. **Overall Consistency** + - Verify all imports are correct + - Verify all function calls are valid + - Check for circular dependencies + - Verify no orphaned code + +**Verification:** All components integrate correctly, no circular dependencies, all imports valid. + +--- + +## Execution Strategy + +### Sub-Agent Execution Order: +1. **Phase 1:** Database & Migration Tests +2. **Phase 2:** Model Layer Tests +3. **Phase 3:** Schema Layer Tests +4. **Phase 4:** Router Layer Tests +5. **Phase 5:** Service Layer Tests +6. **Phase 6:** Utility & Helper Tests +7. **Phase 7:** Configuration & Environment Tests +8. **Phase 8:** Integration Tests + +### Context Management: +- Each sub-agent handles one phase at a time +- Sub-agents return only findings and issues +- Main agent aggregates results and coordinates fixes +- Maximum context usage per sub-agent: ~50,000 tokens + +### Verification Criteria: +- All files compile without syntax errors +- All imports resolve correctly +- All function signatures match across components +- All foreign keys reference existing tables +- All schemas have proper validation +- All routers have proper dependencies +- No circular dependencies +- No orphaned code + +### Issue Reporting: +Each sub-agent should report: +1. **Critical Issues:** Missing files, broken imports, syntax errors +2. **Consistency Issues:** Mismatched types, missing fields, incorrect references +3. **Recommendations:** Improvements, missing features, best practices + +--- + +## Summary + +This test plan provides a systematic approach to verifying the entire backend system by breaking it down into 8 manageable phases. Each phase can be executed by a sub-agent independently, ensuring comprehensive coverage while staying within context limits. The plan focuses on consistency, correctness, and completeness of the codebase.