Datasourceforcryptocurrency / archive /test_integration.py
Really-amin's picture
Upload 295 files
d6d843f verified
"""
Integration Test Script
Tests all critical integrations for the Crypto Hub system
"""
from datetime import datetime
from database.db_manager import db_manager
print("=" * 80)
print("CRYPTO HUB - INTEGRATION TEST")
print("=" * 80)
print()
# Test 1: Database Manager with Data Access
print("TEST 1: Database Manager with Data Access Layer")
print("-" * 80)
# Initialize database
db_manager.init_database()
print("βœ“ Database initialized")
# Test save market price
price = db_manager.save_market_price(
symbol="BTC",
price_usd=45000.00,
market_cap=880000000000,
volume_24h=28500000000,
price_change_24h=2.5,
source="Test"
)
print(f"βœ“ Saved market price: BTC = ${price.price_usd}")
# Test retrieve market price
latest_price = db_manager.get_latest_price_by_symbol("BTC")
print(f"βœ“ Retrieved market price: BTC = ${latest_price.price_usd}")
# Test save news article
news = db_manager.save_news_article(
title="Bitcoin reaches new milestone",
content="Bitcoin price surges past $45,000",
source="Test",
published_at=datetime.utcnow(),
sentiment="positive"
)
print(f"βœ“ Saved news article: ID={news.id}")
# Test retrieve news
latest_news = db_manager.get_latest_news(limit=5)
print(f"βœ“ Retrieved {len(latest_news)} news articles")
# Test save sentiment
sentiment = db_manager.save_sentiment_metric(
metric_name="fear_greed_index",
value=65.0,
classification="greed",
source="Test"
)
print(f"βœ“ Saved sentiment metric: {sentiment.value}")
# Test retrieve sentiment
latest_sentiment = db_manager.get_latest_sentiment()
if latest_sentiment:
print(f"βœ“ Retrieved sentiment: {latest_sentiment.value} ({latest_sentiment.classification})")
print()
# Test 2: Database Statistics
print("TEST 2: Database Statistics")
print("-" * 80)
stats = db_manager.get_database_stats()
print(f"βœ“ Database size: {stats.get('database_size_mb', 0)} MB")
print(f"βœ“ Market prices: {stats.get('market_prices', 0)} records")
print(f"βœ“ News articles: {stats.get('news_articles', 0)} records")
print(f"βœ“ Sentiment metrics: {stats.get('sentiment_metrics', 0)} records")
print()
# Test 3: Data Endpoints Import
print("TEST 3: Data Endpoints")
print("-" * 80)
try:
from api.data_endpoints import router
print(f"βœ“ Data endpoints router imported")
print(f"βœ“ Router prefix: {router.prefix}")
print(f"βœ“ Router tags: {router.tags}")
except Exception as e:
print(f"βœ— Error importing data endpoints: {e}")
print()
# Test 4: Data Persistence
print("TEST 4: Data Persistence Module")
print("-" * 80)
try:
from collectors.data_persistence import data_persistence
print(f"βœ“ Data persistence module imported")
# Create mock data
mock_market_data = [
{
'success': True,
'provider': 'CoinGecko',
'data': {
'bitcoin': {
'usd': 46000.00,
'usd_market_cap': 900000000000,
'usd_24h_vol': 30000000000,
'usd_24h_change': 3.2
}
}
}
]
count = data_persistence.save_market_data(mock_market_data)
print(f"βœ“ Saved {count} market prices via persistence layer")
except Exception as e:
print(f"βœ— Error in data persistence: {e}")
print()
# Test 5: WebSocket Broadcaster
print("TEST 5: WebSocket Broadcaster")
print("-" * 80)
try:
from api.ws_data_broadcaster import broadcaster
print(f"βœ“ WebSocket broadcaster imported")
print(f"βœ“ Broadcaster initialized: {broadcaster is not None}")
except Exception as e:
print(f"βœ— Error importing broadcaster: {e}")
print()
# Test 6: Health Check
print("TEST 6: System Health Check")
print("-" * 80)
health = db_manager.health_check()
print(f"βœ“ Database status: {health.get('status', 'unknown')}")
print(f"βœ“ Database path: {health.get('database_path', 'N/A')}")
print()
print("=" * 80)
print("INTEGRATION TEST COMPLETE")
print("All critical integrations are working!")
print("=" * 80)