Files
goodgo-platform/docs/audits/TEST_FILES_INDEX.md
Ho Ngoc Hai b8512ebff4 docs: consolidate audit and analysis reports into docs/audits/
Move 36 root-level audit/analysis documents and 7 web app audit documents
into docs/audits/ directory to declutter the project root. Remove stale
EXPLORATION_SUMMARY.txt.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-11 01:37:50 +07:00

6.9 KiB

📑 Index: Admin Module Missing Test Files Analysis

📌 Document Overview

Three comprehensive documents have been created to guide you in writing tests for the 3 missing handler/listener files in the admin module:

1. ADMIN_MODULE_TEST_ANALYSIS.md (25 KB)

Purpose: Complete reference guide with all source code and patterns

Contains:

  • Full source code of all 3 untested files
  • All associated command/query classes
  • Complete working test files for reference (approve-listing, ban-user, user-banned)
  • Detailed interface definitions
  • Complete file structure of admin module
  • Step-by-step testing recommendations
  • Test writing checklist

Best for: Reading through the full context and examples


2. DETAILED_HANDLER_COMPARISON.md (15 KB)

Purpose: Side-by-side comparisons and test code walkthroughs

Contains:

  • File structure comparisons
  • Side-by-side handler code comparison (approve vs reject)
  • Test code walkthrough with annotations
  • How to adapt existing tests for new handlers
  • Query handler patterns explained
  • Listener comparison tables
  • Complete test examples ready to adapt

Best for: Understanding the patterns and adapting test code


3. QUICK_REFERENCE.md (3 KB)

Purpose: Fast lookup while writing tests

Contains:

  • 3 files at a glance with all key details
  • Location and pattern to follow for each
  • Mock setup templates
  • Test coverage checklist
  • High-level overview

Best for: Quick lookup while actively coding tests


🎯 The 3 Missing Test Files

1. reject-listing.handler.spec.ts

Type: Command Handler Test Location: apps/api/src/modules/admin/application/__tests__/ Reference Pattern: approve-listing.handler.spec.ts Complexity: Medium

Key Testing Points:

  • Happy path: Successfully reject PENDING_REVIEW listing
  • Error: NotFoundException when listing doesn't exist
  • Error: ValidationException for wrong listing status

2. get-revenue-stats.handler.spec.ts

Type: Query Handler Test Location: apps/api/src/modules/admin/application/__tests__/ Reference Pattern: get-dashboard-stats.handler.spec.ts Complexity: Low

Key Testing Points:

  • Query returns RevenueStatsItem[] from repository
  • Verify parameters passed (startDate, endDate, groupBy)
  • Support both 'day' and 'month' groupBy values

3. user-deactivated.listener.spec.ts

Type: Event Listener Test Location: apps/api/src/modules/admin/application/__tests__/ Reference Pattern: user-banned.listener.spec.ts Complexity: Medium

Key Testing Points:

  • Expires ACTIVE & PENDING_REVIEW listings for deactivated user
  • Logs handling start and result count
  • Handles case with 0 listings updated

For First Time Implementation:

  1. Start with QUICK_REFERENCE.md (3 min read)
  2. Review DETAILED_HANDLER_COMPARISON.md (10 min read)
  3. Keep ADMIN_MODULE_TEST_ANALYSIS.md open for detailed code reference

For Specific Handler:

  • reject-listing: Check approve-listing.handler.spec.ts example in DETAILED_HANDLER_COMPARISON.md
  • get-revenue-stats: Check Query Handler section in DETAILED_HANDLER_COMPARISON.md
  • user-deactivated: Check Listener Comparison section in DETAILED_HANDLER_COMPARISON.md

🔍 What Each Document Covers

ADMIN_MODULE_TEST_ANALYSIS.md Sections:

  1. Section 1: Untested Handler Files (with full source code)
  2. Section 2: Existing Test Files Structure & Patterns
  3. Section 3: Handler Code for Reference (ban-user example)
  4. Section 4: Infrastructure Files (context only)
  5. Section 5: Presentation Layer (context only)
  6. Section 6: Test Writing Recommendations
  7. Section 7: Complete File Structure

DETAILED_HANDLER_COMPARISON.md Sections:

  1. File Structure Comparison: Directory layouts
  2. Side-by-Side Handler Comparison: approve vs reject
  3. Test Code Walkthrough: approve-listing test annotated
  4. How to Adapt: For reject-listing
  5. Query Handler Comparison: dashboard-stats vs revenue-stats
  6. Query Handler Test Pattern: Full example
  7. Listener Comparison: user-banned vs user-deactivated
  8. Listener Test Pattern: Full example

QUICK_REFERENCE.md Sections:

  1. Handler 1: reject-listing overview
  2. Handler 2: get-revenue-stats overview
  3. Handler 3: user-deactivated overview
  4. Mock Setup Templates: For each type
  5. Testing Checklist: What to verify

💡 Quick Start Guide

Step 1: Choose Your Handler

reject-listing → Use approve-listing as template
get-revenue-stats → Use get-dashboard-stats as template
user-deactivated → Use user-banned as template

Step 2: Review the Reference Test

Read the reference test file from DETAILED_HANDLER_COMPARISON.md

Step 3: Copy & Adapt

  • Copy the test structure
  • Change imports
  • Adapt test data
  • Verify mock calls

Step 4: Verify Coverage

Run: npm test admin


📊 Test Statistics

File Type Tests Complexity
reject-listing.handler.spec.ts Command 3 Medium
get-revenue-stats.handler.spec.ts Query 3 Low
user-deactivated.listener.spec.ts Listener 3 Medium
Total - 9 -

Verification Checklist

After writing tests:

  • All 3 test files created
  • All imports correct
  • All mocks set up properly
  • Tests compile without errors
  • npm test admin passes all tests
  • No console warnings
  • Code coverage > 85%

🔗 File Locations

Source Files (need tests):

  • apps/api/src/modules/admin/application/commands/reject-listing/reject-listing.handler.ts
  • apps/api/src/modules/admin/application/queries/get-revenue-stats/get-revenue-stats.handler.ts
  • apps/api/src/modules/admin/application/listeners/user-deactivated.listener.ts

Reference Test Files:

  • apps/api/src/modules/admin/application/__tests__/approve-listing.handler.spec.ts
  • apps/api/src/modules/admin/application/__tests__/get-dashboard-stats.handler.spec.ts
  • apps/api/src/modules/admin/application/__tests__/user-banned.listener.spec.ts

Where to Create New Tests:

  • apps/api/src/modules/admin/application/__tests__/reject-listing.handler.spec.ts (NEW)
  • apps/api/src/modules/admin/application/__tests__/get-revenue-stats.handler.spec.ts (NEW)
  • apps/api/src/modules/admin/application/__tests__/user-deactivated.listener.spec.ts (NEW)

📞 Key Takeaways

  1. All 3 files follow established patterns in the codebase
  2. Reference tests exist for each handler type
  3. Total tests needed: 9 (3 per file)
  4. Estimated time: 1-2 hours to implement all
  5. Difficulty: Low to Medium (high code reuse)
  6. Documentation: Very thorough (all code provided)

Generated: 2026-04-11 All test examples ready to adapt and implement.