H2P3B / setup_test_data.py
muhammadshaheryar's picture
Add application file
dd1b74d
"""Script to create test user and todos for testing."""
from pathlib import Path
import sys
# Add src to path
_src_path = Path(__file__).parent / 'src'
sys.path.insert(0, str(_src_path))
from database import engine, Base
from models.user import User
from models.todo import Todo
from sqlalchemy.orm import sessionmaker
from datetime import datetime, timedelta
Session = sessionmaker(bind=engine)
db = Session()
try:
# Check if test user exists
existing = db.query(User).filter(User.email == 'test@example.com').first()
if existing:
print(f'Using existing test user with ID: {existing.id}')
user = existing
else:
# Create test user
user = User(email='test@example.com')
user.password_hash = 'testpass123' # Note: Should use proper bcrypt hashing
db.add(user)
db.commit()
db.refresh(user)
print(f'Created test user with ID: {user.id}')
# Create test todos with extended features
test_todos = [
Todo(
user_id=user.id,
title='High Priority Task',
priority='high',
description='Important urgent task',
due_date=datetime.utcnow() + timedelta(days=1),
completed=False
),
Todo(
user_id=user.id,
title='Medium Priority Task',
priority='medium',
tags=['work', 'urgent'],
completed=False
),
Todo(
user_id=user.id,
title='Low Priority Task',
priority='low',
due_date=datetime.utcnow() + timedelta(days=3),
tags=['personal'],
completed=False
),
Todo(
user_id=user.id,
title='Recurring Daily Task',
priority='medium',
due_date=datetime.utcnow() + timedelta(hours=4),
recurrence='daily',
completed=False
),
Todo(
user_id=user.id,
title='Overdue Task',
priority='high',
due_date=datetime.utcnow() - timedelta(days=2),
tags=['important'],
completed=False
),
Todo(
user_id=user.id,
title='Completed Task with Tags',
priority='low',
tags=['work', 'done'],
completed=True
),
]
for todo in test_todos:
db.add(todo)
db.commit()
print(f'Created {len(test_todos)} test todos with extended features')
# Print summary
print('\n=== Test Data Summary ===')
print('Email: test@example.com')
print('Password: testpass123')
print('\nCreated todos:')
for todo in test_todos:
print(f' - {todo.title} (priority: {todo.priority}, tags: {todo.tags})')
except Exception as e:
print(f'Error: {e}')
db.rollback()
finally:
db.close()