# ๐งช Tests Directory **Test suite for the Hyperliquid Manual Trading Bot** ## ๐ Available Tests ### **๐ง Core Tests** - **`test_config.py`** - Validates configuration and environment setup - **`test_balance.py`** - Tests balance fetching with CCXT integration ### **๐ฐ Trading Tests** - **`test_perps_commands.py`** - Tests perps trading logic (/long, /short) - **`test_exit_command.py`** - Tests position closing functionality (/exit) - **`test_order_management.py`** - Tests enhanced order management (/orders, /coo) - **`test_risk_management.py`** - Tests stop loss and take profit commands (/sl, /tp) - **`test_order_monitoring.py`** - Tests automatic order monitoring and notifications ## ๐ Running Tests ### **Run All Tests** ```bash cd tests python run_all_tests.py ``` ### **Run Individual Tests** ```bash cd tests python test_config.py # Test configuration python test_balance.py # Test balance fetching python test_perps_commands.py # Test trading commands python test_exit_command.py # Test exit functionality python test_order_management.py # Test order management python test_risk_management.py # Test risk management ``` ### **Run from Project Root** ```bash python tests/run_all_tests.py # All tests python tests/test_config.py # Individual test ``` ## ๐ Test Structure Each test file follows the same pattern: ```python #!/usr/bin/env python3 """ Test description """ import sys from pathlib import Path # Add project paths project_root = Path(__file__).parent.parent sys.path.insert(0, str(project_root)) sys.path.insert(0, str(project_root / 'src')) # Import modules to test from hyperliquid_client import HyperliquidClient from config import Config def test_function_name(): """Main test function.""" # Test implementation return True # or False if __name__ == "__main__": success = test_function_name() sys.exit(0 if success else 1) ``` ## โ Test Coverage ### **Configuration & Setup** - โ Environment variable validation - โ CCXT configuration format - โ Network settings (testnet/mainnet) - โ API key validation ### **Hyperliquid Client** - โ Client initialization - โ Balance fetching (CCXT format) - โ Position fetching - โ Order fetching - โ Market data retrieval ### **Trading Commands** - โ Long/short command logic - โ Market vs limit order detection - โ Token amount calculations - โ Symbol format conversion - โ Price validation ### **Order Management** - โ Order filtering by token - โ Bulk order cancellation logic - โ Token extraction and validation ### **Position Management** - โ Position detection - โ Exit order logic - โ Direction determination (long/short) ### **Risk Management** - โ Stop loss validation (price direction) - โ Take profit validation (price direction) - โ Position requirement checking - โ P&L calculation at SL/TP levels ### **Order Monitoring** - โ Order fill detection logic - โ Position change tracking - โ P&L calculation accuracy - โ Notification triggering - โ 30-second monitoring cycle ## ๐ What Tests Check ### **Integration Tests** - Real API connectivity (testnet) - Data format validation - Error handling - Network timeouts ### **Logic Tests** - Command parsing - Calculation accuracy - Symbol conversions - Filter operations ### **Safety Tests** - Configuration validation - API key security - Network isolation (testnet) ## ๐ Test Output Each test provides: - **โ PASS/โ FAIL** status - **Detailed progress** with emojis - **Error messages** with stack traces - **Configuration summary** - **Ready-to-use commands** for testing Example output: ``` ๐งช Testing Configuration Setup ================================================== โ Configuration valid ๐ Network: Testnet ๐ Private Key: 0x1234567890... ๐ Config test PASSED! ``` ## ๐ Adding New Tests 1. **Create test file**: `test_new_feature.py` 2. **Follow naming convention**: `test_<feature_name>.py` 3. **Use standard structure** (see above) 4. **Add to this README** 5. **Test runner** will auto-discover it ## ๐ก๏ธ Test Safety - **All tests use testnet** by default - **No real money** at risk - **Read-only operations** (except explicitly noted) - **API key masking** in outputs - **Network isolation** validation ## ๐ฑ Mobile Testing After tests pass, verify on Telegram: ```bash # Start bot python src/telegram_bot.py # Test commands /start /balance /long BTC 10 /sl BTC 9000 /tp BTC 11000 /orders /coo BTC ``` **Happy testing! ๐งช๐**