Files
email-organizer/test_edit_functionality.py
2025-08-03 12:18:54 -07:00

75 lines
2.6 KiB
Python

import unittest
from app import create_app, db
from app.models import Folder, User
import uuid
class EditFolderTestCase(unittest.TestCase):
def setUp(self):
self.app = create_app()
self.app.config['TESTING'] = True
self.app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:'
self.client = self.app.test_client()
with self.app.app_context():
db.create_all()
# Create a test user
self.user_id = '123e4567-e89b-12d3-a456-426614174000'
user = User(id=self.user_id, email='test@example.com')
db.session.add(user)
db.session.commit()
# Create a test folder
self.folder_id = str(uuid.uuid4())
folder = Folder(
id=self.folder_id,
user_id=self.user_id,
name='Test Folder',
rule_text='Move all emails to this folder',
priority=0
)
db.session.add(folder)
db.session.commit()
def tearDown(self):
with self.app.app_context():
db.session.remove()
db.drop_all()
def test_get_folder(self):
with self.app.app_context():
response = self.client.get(f'/api/folders/{self.folder_id}')
self.assertEqual(response.status_code, 200)
data = response.get_json()
self.assertEqual(data['name'], 'Test Folder')
self.assertEqual(data['rule_text'], 'Move all emails to this folder')
self.assertEqual(data['priority'], 0)
def test_update_folder(self):
with self.app.app_context():
# Update the folder
update_data = {
'name': 'Updated Folder',
'rule_text': 'Move important emails here',
'priority': '1'
}
response = self.client.put(
f'/api/folders/{self.folder_id}',
data=update_data,
content_type='application/x-www-form-urlencoded'
)
# Check that the response is successful
self.assertEqual(response.status_code, 200)
# Verify the folder was updated in the database
folder = Folder.query.filter_by(id=self.folder_id).first()
self.assertIsNotNone(folder)
self.assertEqual(folder.name, 'Updated Folder')
self.assertEqual(folder.rule_text, 'Move important emails here')
self.assertEqual(folder.priority, 1)
if __name__ == '__main__':
unittest.main()