Datasourceforcryptocurrency / archive /test_integration.py
Really-amin's picture
Upload 295 files
d6d843f verified
raw
history blame
4.03 kB
"""
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)