Base code
This commit is contained in:
139
backend/test/test_database.py
Normal file
139
backend/test/test_database.py
Normal file
@@ -0,0 +1,139 @@
|
||||
"""
|
||||
Test script for database functionality.
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
from services.database import init_database, get_db_session, close_database
|
||||
from services.website_analysis_service import WebsiteAnalysisService
|
||||
from models.onboarding import WebsiteAnalysis, OnboardingSession
|
||||
|
||||
def test_database_functionality():
|
||||
"""Test database initialization and basic operations."""
|
||||
try:
|
||||
print("Testing database functionality...")
|
||||
|
||||
# Initialize database
|
||||
init_database()
|
||||
print("✅ Database initialized successfully")
|
||||
|
||||
# Get database session
|
||||
db_session = get_db_session()
|
||||
if not db_session:
|
||||
print("❌ Failed to get database session")
|
||||
return False
|
||||
|
||||
print("✅ Database session created successfully")
|
||||
|
||||
# Test website analysis service
|
||||
analysis_service = WebsiteAnalysisService(db_session)
|
||||
print("✅ Website analysis service created successfully")
|
||||
|
||||
# Test creating a session
|
||||
session = OnboardingSession(user_id=1, current_step=2, progress=25.0)
|
||||
db_session.add(session)
|
||||
db_session.commit()
|
||||
print(f"✅ Created onboarding session with ID: {session.id}")
|
||||
|
||||
# Test saving analysis
|
||||
test_analysis_data = {
|
||||
'style_analysis': {
|
||||
'writing_style': {
|
||||
'tone': 'professional',
|
||||
'voice': 'active',
|
||||
'complexity': 'moderate',
|
||||
'engagement_level': 'high'
|
||||
},
|
||||
'target_audience': {
|
||||
'demographics': ['professionals', 'business owners'],
|
||||
'expertise_level': 'intermediate',
|
||||
'industry_focus': 'technology',
|
||||
'geographic_focus': 'global'
|
||||
},
|
||||
'content_type': {
|
||||
'primary_type': 'blog',
|
||||
'secondary_types': ['article', 'guide'],
|
||||
'purpose': 'informational',
|
||||
'call_to_action': 'subscribe'
|
||||
},
|
||||
'recommended_settings': {
|
||||
'writing_tone': 'professional',
|
||||
'target_audience': 'business professionals',
|
||||
'content_type': 'blog posts',
|
||||
'creativity_level': 'balanced',
|
||||
'geographic_location': 'global'
|
||||
}
|
||||
},
|
||||
'crawl_result': {
|
||||
'content': 'Sample website content...',
|
||||
'word_count': 1500
|
||||
},
|
||||
'style_patterns': {
|
||||
'sentence_length': 'medium',
|
||||
'paragraph_structure': 'well-organized'
|
||||
},
|
||||
'style_guidelines': {
|
||||
'tone_guidelines': 'Maintain professional tone',
|
||||
'structure_guidelines': 'Use clear headings'
|
||||
}
|
||||
}
|
||||
|
||||
analysis_id = analysis_service.save_analysis(
|
||||
session_id=session.id,
|
||||
website_url='https://example.com',
|
||||
analysis_data=test_analysis_data
|
||||
)
|
||||
|
||||
if analysis_id:
|
||||
print(f"✅ Saved analysis with ID: {analysis_id}")
|
||||
else:
|
||||
print("❌ Failed to save analysis")
|
||||
return False
|
||||
|
||||
# Test retrieving analysis
|
||||
analysis = analysis_service.get_analysis(analysis_id)
|
||||
if analysis:
|
||||
print("✅ Retrieved analysis successfully")
|
||||
print(f" Website URL: {analysis['website_url']}")
|
||||
print(f" Writing Style: {analysis['writing_style']['tone']}")
|
||||
else:
|
||||
print("❌ Failed to retrieve analysis")
|
||||
return False
|
||||
|
||||
# Test checking existing analysis
|
||||
existing_check = analysis_service.check_existing_analysis(
|
||||
session_id=session.id,
|
||||
website_url='https://example.com'
|
||||
)
|
||||
|
||||
if existing_check and existing_check.get('exists'):
|
||||
print("✅ Existing analysis check works")
|
||||
else:
|
||||
print("❌ Existing analysis check failed")
|
||||
return False
|
||||
|
||||
# Clean up
|
||||
if analysis_id:
|
||||
analysis_service.delete_analysis(analysis_id)
|
||||
db_session.delete(session)
|
||||
db_session.commit()
|
||||
print("✅ Cleanup completed")
|
||||
|
||||
print("\n🎉 All database tests passed!")
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Database test failed: {str(e)}")
|
||||
return False
|
||||
finally:
|
||||
close_database()
|
||||
|
||||
if __name__ == "__main__":
|
||||
success = test_database_functionality()
|
||||
if success:
|
||||
print("\n✅ Database functionality is working correctly!")
|
||||
else:
|
||||
print("\n❌ Database functionality has issues!")
|
||||
sys.exit(1)
|
||||
Reference in New Issue
Block a user