def test_move(self): f1 = Folder(parent=self.account.inbox, name=get_random_string(16)).save() f2 = Folder(parent=self.account.inbox, name=get_random_string(16)).save() f1_id, f1_changekey, f1_parent = f1.id, f1.changekey, f1.parent with self.assertRaises(TypeError) as e: f1.move(to_folder="XXX") # Must be folder instance self.assertEqual( e.exception.args[0], "'to_folder' 'XXX' must be of type (<class 'exchangelib.folders.base.BaseFolder'>, " "<class 'exchangelib.properties.FolderId'>)", ) f1.move(f2) self.assertEqual(f1.id, f1_id) self.assertNotEqual(f1.changekey, f1_changekey) self.assertEqual(f1.parent, f2) self.assertNotEqual(f1.changekey, f1_parent) f1_id, f1_changekey, f1_parent = f1.id, f1.changekey, f1.parent f1.refresh() self.assertEqual(f1.id, f1_id) self.assertEqual(f1.parent, f2) self.assertNotEqual(f1.changekey, f1_parent) f1.delete() f2.delete()
def test_refresh(self): # Test that we can refresh folders f = Folder(parent=self.account.inbox, name=get_random_string(16)).save() f.refresh() old_values = {} for field in f.FIELDS: old_values[field.name] = getattr(f, field.name) if field.name in ("account", "id", "changekey", "parent_folder_id"): # These are needed for a successful refresh() continue if field.is_read_only: continue setattr(f, field.name, self.random_val(field)) f.refresh() for field in f.FIELDS: if field.name == "changekey": # folders may change while we're testing continue if field.is_read_only: # count values may change during the test continue self.assertEqual(getattr(f, field.name), old_values[field.name], (f, field.name)) # Test refresh of root orig_name = self.account.root.name self.account.root.name = "xxx" self.account.root.refresh() self.assertEqual(self.account.root.name, orig_name) folder = Folder() with self.assertRaises(ValueError): folder.refresh() # Must have root folder folder.root = self.account.root with self.assertRaises(ValueError): folder.refresh() # Must have an id
def test_move(self): f1 = Folder(parent=self.account.inbox, name=get_random_string(16)).save() f2 = Folder(parent=self.account.inbox, name=get_random_string(16)).save() f1_id, f1_changekey, f1_parent = f1.id, f1.changekey, f1.parent f1.move(f2) self.assertEqual(f1.id, f1_id) self.assertNotEqual(f1.changekey, f1_changekey) self.assertEqual(f1.parent, f2) f1_id, f1_changekey, f1_parent = f1.id, f1.changekey, f1.parent f1.refresh() self.assertEqual(f1.id, f1_id) self.assertEqual(f1.parent, f2) f1.delete() f2.delete()
def test_refresh(self): # Test that we can refresh folders for f in self.account.root.walk(): with self.subTest(f=f): if isinstance(f, System): # Can't refresh the 'System' folder for some reason continue old_values = {} for field in f.FIELDS: old_values[field.name] = getattr(f, field.name) if field.name in ('account', 'id', 'changekey', 'parent_folder_id'): # These are needed for a successful refresh() continue if field.is_read_only: continue setattr(f, field.name, self.random_val(field)) f.refresh() for field in f.FIELDS: if field.name == 'changekey': # folders may change while we're testing continue if field.is_read_only: # count values may change during the test continue self.assertEqual(getattr(f, field.name), old_values[field.name], (f, field.name)) # Test refresh of root all_folders = sorted(f.name for f in self.account.root.walk()) self.account.root.refresh() self.assertIsNone(self.account.root._subfolders) self.assertEqual( sorted(f.name for f in self.account.root.walk()), all_folders ) folder = Folder() with self.assertRaises(ValueError): folder.refresh() # Must have root folder folder.root = self.account.root with self.assertRaises(ValueError): folder.refresh() # Must have an id
def test_counts(self): # Test count values on a folder f = Folder(parent=self.account.inbox, name=get_random_string(16)).save() f.refresh() self.assertEqual(f.total_count, 0) self.assertEqual(f.unread_count, 0) self.assertEqual(f.child_folder_count, 0) # Create some items items = [] for i in range(3): subject = 'Test Subject %s' % i item = Message(account=self.account, folder=f, is_read=False, subject=subject, categories=self.categories) item.save() items.append(item) # Refresh values and see that total_count and unread_count changes f.refresh() self.assertEqual(f.total_count, 3) self.assertEqual(f.unread_count, 3) self.assertEqual(f.child_folder_count, 0) for i in items: i.is_read = True i.save() # Refresh values and see that unread_count changes f.refresh() self.assertEqual(f.total_count, 3) self.assertEqual(f.unread_count, 0) self.assertEqual(f.child_folder_count, 0) self.bulk_delete(items) # Refresh values and see that total_count changes f.refresh() self.assertEqual(f.total_count, 0) self.assertEqual(f.unread_count, 0) self.assertEqual(f.child_folder_count, 0) # Create some subfolders subfolders = [] for i in range(3): subfolders.append(Folder(parent=f, name=get_random_string(16)).save()) # Refresh values and see that child_folder_count changes f.refresh() self.assertEqual(f.total_count, 0) self.assertEqual(f.unread_count, 0) self.assertEqual(f.child_folder_count, 3) for sub_f in subfolders: sub_f.delete() # Refresh values and see that child_folder_count changes f.refresh() self.assertEqual(f.total_count, 0) self.assertEqual(f.unread_count, 0) self.assertEqual(f.child_folder_count, 0) f.delete()