mirror of
https://github.com/DRYTRIX/TimeTracker.git
synced 2025-12-18 17:29:58 -06:00
- Add organized screenshot sections for better visual presentation - Include all 12 available screenshots from assets/screenshots/ - Group screenshots into logical categories: * Core Application Views (Dashboard, Projects, Tasks, Clients) * Management & Analytics (Reports, Visual Analytics, Task Management, Admin) * Data Entry & Creation (Log Time, New Task, New Client, New Project) - Improve visual layout with proper spacing and responsive design - Enhance user experience by showcasing full application capabilities
162 lines
4.9 KiB
Python
162 lines
4.9 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Test Script for TimeTracker Migration System
|
|
This script verifies that the migration system is working correctly
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
def test_flask_migrate_installation():
|
|
"""Test if Flask-Migrate is properly installed"""
|
|
try:
|
|
import flask_migrate
|
|
print("✓ Flask-Migrate is installed")
|
|
return True
|
|
except ImportError:
|
|
print("✗ Flask-Migrate is not installed")
|
|
return False
|
|
|
|
def test_database_connection():
|
|
"""Test database connection"""
|
|
try:
|
|
from app import create_app, db
|
|
app = create_app()
|
|
|
|
with app.app_context():
|
|
# Test basic connection
|
|
result = db.session.execute(db.text("SELECT 1"))
|
|
print("✓ Database connection successful")
|
|
return True
|
|
except Exception as e:
|
|
print(f"✗ Database connection failed: {e}")
|
|
return False
|
|
|
|
def test_migration_files():
|
|
"""Test if migration files exist and are valid"""
|
|
migrations_dir = Path("migrations")
|
|
|
|
if not migrations_dir.exists():
|
|
print("✗ Migrations directory does not exist")
|
|
return False
|
|
|
|
required_files = [
|
|
"env.py",
|
|
"script.py.mako",
|
|
"alembic.ini",
|
|
"README.md"
|
|
]
|
|
|
|
for file in required_files:
|
|
if not (migrations_dir / file).exists():
|
|
print(f"✗ Required file missing: {file}")
|
|
return False
|
|
|
|
print("✓ All required migration files exist")
|
|
return True
|
|
|
|
def test_migration_commands():
|
|
"""Test if migration commands are available"""
|
|
try:
|
|
# Test flask db init (should not fail if already initialized)
|
|
result = os.system("flask db --help > /dev/null 2>&1")
|
|
if result == 0:
|
|
print("✓ Flask migration commands available")
|
|
return True
|
|
else:
|
|
print("✗ Flask migration commands not available")
|
|
return False
|
|
except Exception as e:
|
|
print(f"✗ Error testing migration commands: {e}")
|
|
return False
|
|
|
|
def test_models_import():
|
|
"""Test if all models can be imported"""
|
|
try:
|
|
from app.models import User, Project, TimeEntry, Task, Settings, Invoice, Client
|
|
print("✓ All models imported successfully")
|
|
return True
|
|
except Exception as e:
|
|
print(f"✗ Error importing models: {e}")
|
|
return False
|
|
|
|
def test_migration_scripts():
|
|
"""Test if migration scripts exist and are valid"""
|
|
scripts = [
|
|
"migrate_existing_database.py",
|
|
"legacy_schema_migration.py",
|
|
"manage_migrations.py"
|
|
]
|
|
|
|
for script in scripts:
|
|
script_path = Path("migrations") / script
|
|
if not script_path.exists():
|
|
print(f"✗ Migration script missing: {script}")
|
|
return False
|
|
|
|
print("✓ All migration scripts exist")
|
|
return True
|
|
|
|
def run_comprehensive_test():
|
|
"""Run all tests"""
|
|
print("=== Testing TimeTracker Migration System ===\n")
|
|
|
|
tests = [
|
|
("Flask-Migrate Installation", test_flask_migrate_installation),
|
|
("Database Connection", test_database_connection),
|
|
("Migration Files", test_migration_files),
|
|
("Migration Commands", test_migration_commands),
|
|
("Models Import", test_models_import),
|
|
("Migration Scripts", test_migration_scripts)
|
|
]
|
|
|
|
passed = 0
|
|
total = len(tests)
|
|
|
|
for test_name, test_func in tests:
|
|
print(f"Testing: {test_name}")
|
|
if test_func():
|
|
passed += 1
|
|
print()
|
|
|
|
print(f"=== Test Results ===")
|
|
print(f"Passed: {passed}/{total}")
|
|
|
|
if passed == total:
|
|
print("🎉 All tests passed! Migration system is ready.")
|
|
return True
|
|
else:
|
|
print("⚠️ Some tests failed. Please fix issues before proceeding.")
|
|
return False
|
|
|
|
def main():
|
|
"""Main function"""
|
|
if not Path("app.py").exists():
|
|
print("Error: Please run this script from the TimeTracker root directory")
|
|
sys.exit(1)
|
|
|
|
# Set environment variables
|
|
os.environ.setdefault('FLASK_APP', 'app.py')
|
|
|
|
success = run_comprehensive_test()
|
|
|
|
if success:
|
|
print("\n✅ Migration system is ready for use!")
|
|
print("\nNext steps:")
|
|
print("1. For fresh installation: python migrations/manage_migrations.py")
|
|
print("2. For existing database: python migrations/migrate_existing_database.py")
|
|
print("3. For legacy schema: python migrations/legacy_schema_migration.py")
|
|
else:
|
|
print("\n❌ Migration system has issues that need to be resolved.")
|
|
print("\nTroubleshooting:")
|
|
print("1. Install Flask-Migrate: pip install Flask-Migrate")
|
|
print("2. Check database connection settings")
|
|
print("3. Verify all required files exist")
|
|
print("4. Check application configuration")
|
|
|
|
sys.exit(1)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|