agmission/Development/server/docs/TEST_COMMANDS.md

140 lines
3.7 KiB
Markdown

# Test Commands - Quick Reference
## Run Tests by Category
```bash
npm run test:all # All tests (61 files across 8 categories)
npm run test:promo # Promotion/coupon tests (13 files)
npm run test:satloc # SatLoc partner integration (13 files)
npm run test:job # Job processing (9 files)
npm run test:payment # Payment & billing (4 files)
npm run test:dlq # Dead Letter Queue (3 files)
npm run test:parsing # Log parsing (7 files)
npm run test:integration # Integration tests (2 files)
npm run test:utils # Utility tests (9 files)
```
## Run Single Test
```bash
npm run test:single tests/promo/test_promo_details.js
# OR
node tests/promo/test_promo_details.js
```
## Run with Options
```bash
npm run test:verbose # Show all output (not just failures)
npm run test:bail # Stop on first failure
# Custom patterns
npm run test:file 'promo/test_priority*.js'
node tests/run_all_tests.js --pattern 'job/test_*.js' --verbose
```
## Understanding Results
### Exit Codes
- **0** = Test PASSED ✅
- **1** = Test FAILED ❌
### Output Format
```
✅ PASSED: test_name.js (1234ms) # Success
❌ FAILED: test_name.js (5678ms) # Failure
```
### Summary
```
📊 TEST SUMMARY
✅ Passed: 10/13 # 10 passed out of 13 total
❌ Failed: 3/13 # 3 failed
⏱️ Total Duration: 72.00s # Total time
```
## When Tests Fail
1. **Check output preview** (shows last 5 lines of error)
2. **Run with verbose**: `npm run test:verbose`
3. **Run single test**: `node tests/category/test_file.js`
4. **Check services**: MongoDB, Redis, RabbitMQ running?
5. **Verify env vars**: Stripe keys, API credentials correct?
## Common Failures
| Error | Cause | Fix |
|-------|-------|-----|
| Exit code 1 | Test logic failed | Check assertions in test file |
| ECONNREFUSED | Service not running | Start MongoDB/Redis/RabbitMQ |
| 401 Unauthorized | Invalid credentials | Check environment.env |
| ENOTFOUND | DNS/network issue | Check internet connection |
| Rate limit | Too many API calls | Add delays between calls |
## Debugging Commands
```bash
# See full output for failing test
node tests/dlq/test_dlq_routes.js
# Run one category with verbose output
node tests/run_all_tests.js --pattern 'payment/test_*.js' --verbose
# Stop on first failure to save time
npm run test:bail
```
## Test File Naming
- `test_*.js` - Regular tests (included in runs)
- `*.spec.js` - Mocha tests (run separately with `npm test`)
- `manual_*.js` - Manual scripts (excluded from test runs)
## Environment
Tests use `environment.env` by default:
```bash
# Use different environment
node tests/run_all_tests.js --env ./environment_prod.env
```
## Test Categories Summary
| Category | Files | Description |
|----------|-------|-------------|
| promo | 13 | Promotion codes, coupons, validation |
| satloc | 13 | Partner integration, log parsing, API sync |
| job | 9 | Job processing, queueing, uploads |
| utils | 9 | Helper functions, utilities |
| parsing | 7 | Log file parsing, data extraction |
| payment | 4 | Stripe integration, subscriptions |
| dlq | 3 | Dead letter queue management |
| integration | 2 | Cross-feature integration tests |
## Quick Start
```bash
# 1. Run all tests to see overall status
npm run test:all
# 2. Run specific category if failures
npm run test:promo
# 3. Debug individual test
node tests/promo/test_promo_details.js
```
## Notes
- Tests are **integration tests** (not unit tests)
- Connect to **real services** (MongoDB, Stripe, RabbitMQ)
- Require services to be **running and accessible**
- Each test runs in **separate process** (isolated)
- Results based on **exit codes** (0 = pass, non-zero = fail)
## More Info
- Complete guide: `docs/TEST_RUNNER_GUIDE.md`
- Test organization: `TESTS_ORGANIZED.md`