Files
echoes-of-the-ash/tests/test_db_init.py
2025-11-07 15:27:13 +01:00

62 lines
1.9 KiB
Python

#!/usr/bin/env python3
"""
Test script to verify that init_db() creates all tables and indexes properly.
This simulates a fresh database initialization.
"""
import asyncio
import sys
import os
sys.path.insert(0, '/app')
from api import database
async def test_init():
"""Test database initialization"""
print("Testing database initialization...")
print("=" * 60)
try:
# Initialize database (create tables and indexes)
await database.init_db()
print("✓ Database initialization completed successfully")
# Verify tables exist
async with database.engine.begin() as conn:
result = await conn.execute(database.text("""
SELECT tablename
FROM pg_tables
WHERE schemaname = 'public'
ORDER BY tablename;
"""))
tables = [row[0] for row in result]
print(f"\n✓ Found {len(tables)} tables:")
for table in tables:
print(f" - {table}")
# Verify indexes exist
result = await conn.execute(database.text("""
SELECT tablename, indexname
FROM pg_indexes
WHERE schemaname = 'public' AND indexname LIKE 'idx_%'
ORDER BY tablename, indexname;
"""))
indexes = list(result)
print(f"\n✓ Found {len(indexes)} performance indexes:")
for table, index in indexes:
print(f" - {index} on {table}")
print("\n" + "=" * 60)
print("✓ All tests passed!")
return True
except Exception as e:
print(f"\n✗ Error during initialization: {e}")
import traceback
traceback.print_exc()
return False
finally:
await database.engine.dispose()
if __name__ == "__main__":
success = asyncio.run(test_init())
sys.exit(0 if success else 1)