Files
email-organizer/tests/test_folder_deletion.py
2025-08-06 15:38:49 -07:00

78 lines
2.9 KiB
Python

import pytest
from app.models import User, Folder, ProcessedEmail, db
from app import create_app
class TestFolderDeletion:
def test_delete_folder_with_emails(self, app, mock_user, authenticated_client):
"""Test that deleting a folder also deletes its associated emails."""
with app.app_context():
# Create a folder
folder = Folder(
user_id=mock_user.id,
name='Test Folder',
rule_text='Test rule'
)
db.session.add(folder)
db.session.commit()
# Create some email records associated with this folder
email_records = [
ProcessedEmail(
user_id=mock_user.id,
folder_id=folder.id,
folder_name='Test Folder',
email_uid='123',
is_processed=False
),
ProcessedEmail(
user_id=mock_user.id,
folder_id=folder.id,
folder_name='Test Folder',
email_uid='456',
is_processed=False
)
]
db.session.bulk_save_objects(email_records)
db.session.commit()
# Verify emails were created
assert ProcessedEmail.query.count() == 2
# Delete the folder
response = authenticated_client.delete(f'/api/folders/{folder.id}')
# Verify the response is successful
assert response.status_code == 200
# Verify the folder is deleted
deleted_folder = Folder.query.filter_by(id=folder.id).first()
assert deleted_folder is None
# Verify the associated emails are also deleted (cascade delete)
assert ProcessedEmail.query.count() == 0
def test_delete_folder_with_no_emails(self, app, mock_user, authenticated_client):
"""Test that deleting a folder with no associated emails works normally."""
with app.app_context():
# Create a folder
folder = Folder(
user_id=mock_user.id,
name='Test Folder',
rule_text='Test rule'
)
db.session.add(folder)
db.session.commit()
# Verify no emails are associated with this folder
assert ProcessedEmail.query.filter_by(folder_id=folder.id).count() == 0
# Delete the folder
response = authenticated_client.delete(f'/api/folders/{folder.id}')
# Verify the response is successful
assert response.status_code == 200
# Verify the folder is deleted
deleted_folder = Folder.query.filter_by(id=folder.id).first()
assert deleted_folder is None