#!/usr/bin/env python3
"""
Test script for new perps trading commands
"""

import sys
import os
from pathlib import Path

# Add the project root and src directory to the path
project_root = Path(__file__).parent.parent
sys.path.insert(0, str(project_root))
sys.path.insert(0, str(project_root / 'src'))

from hyperliquid_client import HyperliquidClient
from config import Config

def test_perps_commands():
    """Test the perps trading functionality."""
    print("๐Ÿงช Testing Perps Trading Commands")
    print("=" * 50)
    
    try:
        # Test configuration
        if not Config.validate():
            print("โŒ Configuration validation failed!")
            return False
        
        print(f"โœ… Configuration valid")
        print(f"๐ŸŒ Network: {'Testnet' if Config.HYPERLIQUID_TESTNET else 'Mainnet'}")
        print()
        
        # Initialize client
        print("๐Ÿ”ง Initializing Hyperliquid client...")
        client = HyperliquidClient(use_testnet=Config.HYPERLIQUID_TESTNET)
        
        if not client.sync_client:
            print("โŒ Failed to initialize client!")
            return False
        
        print("โœ… Client initialized successfully")
        print()
        
        # Test token symbol conversion
        tokens_to_test = ['BTC', 'ETH', 'SOL']
        
        for token in tokens_to_test:
            print(f"๐Ÿ“Š Testing {token}...")
            
            # Convert to full symbol
            symbol = f"{token}/USDC:USDC"
            print(f"  Symbol: {token} โ†’ {symbol}")
            
            # Test market data fetching
            market_data = client.get_market_data(symbol)
            
            if market_data:
                price = float(market_data['ticker'].get('last', 0))
                print(f"  โœ… Current price: ${price:,.2f}")
                
                # Test calculation
                usdc_amount = 100
                token_amount = usdc_amount / price
                print(f"  ๐Ÿ“ˆ Long ${usdc_amount} USDC = {token_amount:.6f} {token}")
                print(f"  ๐Ÿ“‰ Short ${usdc_amount} USDC = {token_amount:.6f} {token}")
                
            else:
                print(f"  โŒ Could not fetch price for {token}")
                
            print()
        
        return True
        
    except Exception as e:
        print(f"๐Ÿ’ฅ Test failed with error: {e}")
        import traceback
        traceback.print_exc()
        return False

if __name__ == "__main__":
    success = test_perps_commands()
    
    if success:
        print("๐ŸŽ‰ Perps commands test PASSED!")
        print("\n๐Ÿ“ฑ Ready to test on Telegram:")
        print("  /long BTC 100")
        print("  /short ETH 50")
        sys.exit(0)
    else:
        print("๐Ÿ’ฅ Perps commands test FAILED!")
        sys.exit(1)