Base code

This commit is contained in:
Kunthawat Greethong
2026-01-08 22:39:53 +07:00
parent 697115c61a
commit c35fa52117
2169 changed files with 626670 additions and 0 deletions

View 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)