Init Repo
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test script to verify that shot deletion properly sets deleted_by and deleted_at fields.
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
from database import get_db
|
||||
from models.shot import Shot
|
||||
from models.user import User
|
||||
from models.project import Project
|
||||
from models.episode import Episode
|
||||
from services.shot_soft_deletion import ShotSoftDeletionService
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
def test_shot_deletion_fields():
|
||||
"""Test that shot deletion properly sets deleted_by and deleted_at fields."""
|
||||
|
||||
# Get database session
|
||||
db = next(get_db())
|
||||
|
||||
try:
|
||||
# Find an existing shot that's not deleted
|
||||
shot = db.query(Shot).filter(Shot.deleted_at.is_(None)).first()
|
||||
if not shot:
|
||||
print("No active shots found to test deletion")
|
||||
return
|
||||
|
||||
# Find an admin user to perform the deletion
|
||||
admin_user = db.query(User).filter(User.is_admin == True).first()
|
||||
if not admin_user:
|
||||
print("No admin user found to perform deletion")
|
||||
return
|
||||
|
||||
print(f"Testing deletion of shot: {shot.name} (ID: {shot.id})")
|
||||
print(f"Deleting as user: {admin_user.email} (ID: {admin_user.id})")
|
||||
|
||||
# Check initial state
|
||||
print(f"Before deletion - deleted_at: {shot.deleted_at}, deleted_by: {shot.deleted_by}")
|
||||
|
||||
# Perform soft deletion
|
||||
deletion_service = ShotSoftDeletionService()
|
||||
result = deletion_service.soft_delete_shot_cascade(shot.id, db, admin_user)
|
||||
|
||||
if not result.success:
|
||||
print(f"Deletion failed: {result.errors}")
|
||||
return
|
||||
|
||||
# Commit the transaction (this was the missing piece!)
|
||||
db.commit()
|
||||
|
||||
# Refresh the shot object to get updated values
|
||||
db.refresh(shot)
|
||||
|
||||
# Check final state
|
||||
print(f"After deletion - deleted_at: {shot.deleted_at}, deleted_by: {shot.deleted_by}")
|
||||
print(f"Deletion result - success: {result.success}")
|
||||
print(f"Deletion result - deleted_by: {result.deleted_by}")
|
||||
print(f"Deletion result - deleted_at: {result.deleted_at}")
|
||||
|
||||
# Verify the fields are set
|
||||
if shot.deleted_at is not None and shot.deleted_by is not None:
|
||||
print("✅ SUCCESS: Both deleted_at and deleted_by fields are properly set!")
|
||||
else:
|
||||
print("❌ FAILURE: deleted_at or deleted_by fields are still None")
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error during test: {e}")
|
||||
db.rollback()
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_shot_deletion_fields()
|
||||
Reference in New Issue
Block a user