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()