progress.
This commit is contained in:
78
tests/integration/test_folder_deletion.py
Normal file
78
tests/integration/test_folder_deletion.py
Normal file
@@ -0,0 +1,78 @@
|
||||
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
|
||||
Reference in New Issue
Block a user