def test_folder_query_set_failures(self): with self.assertRaises(ValueError): FolderQuerySet('XXX') fld_qs = SingleFolderQuerySet(account=self.account, folder=self.account.inbox) with self.assertRaises(InvalidField): fld_qs.only('XXX') with self.assertRaises(InvalidField): list(fld_qs.filter(XXX='XXX'))
def test_folder_query_set(self): # Create a folder hierarchy and test a folder queryset # # -f0 # - f1 # - f2 # - f21 # - f22 f0 = Folder(parent=self.account.inbox, name=get_random_string(16)).save() f1 = Folder(parent=f0, name=get_random_string(16)).save() f2 = Folder(parent=f0, name=get_random_string(16)).save() f21 = Folder(parent=f2, name=get_random_string(16)).save() f22 = Folder(parent=f2, name=get_random_string(16)).save() folder_qs = SingleFolderQuerySet(account=self.account, folder=f0) try: # Test all() self.assertSetEqual({f.name for f in folder_qs.all()}, {f.name for f in (f1, f2, f21, f22)}) # Test only() self.assertSetEqual({f.name for f in folder_qs.only("name").all()}, {f.name for f in (f1, f2, f21, f22)}) self.assertSetEqual({f.child_folder_count for f in folder_qs.only("name").all()}, {None}) # Test depth() self.assertSetEqual({f.name for f in folder_qs.depth(SHALLOW).all()}, {f.name for f in (f1, f2)}) # Test filter() self.assertSetEqual({f.name for f in folder_qs.filter(name=f1.name)}, {f.name for f in (f1,)}) self.assertSetEqual( {f.name for f in folder_qs.filter(name__in=[f1.name, f2.name])}, {f.name for f in (f1, f2)} ) # Test get() self.assertEqual(folder_qs.get(id=f2.id).name, f2.name) self.assertEqual(folder_qs.get(id=f2.id, changekey=f2.changekey).name, f2.name) self.assertEqual(folder_qs.get(name=f2.name).child_folder_count, 2) self.assertEqual(folder_qs.filter(name=f2.name).get().child_folder_count, 2) self.assertEqual(folder_qs.only("name").get(name=f2.name).name, f2.name) self.assertEqual(folder_qs.only("name").get(name=f2.name).child_folder_count, None) with self.assertRaises(DoesNotExist): folder_qs.get(name=get_random_string(16)) with self.assertRaises(MultipleObjectsReturned): folder_qs.get() finally: f0.wipe() f0.delete()
def test_folder_query_set_failures(self): with self.assertRaises(TypeError) as e: FolderQuerySet("XXX") self.assertEqual( e.exception.args[0], "'folder_collection' 'XXX' must be of type <class 'exchangelib.folders.collections.FolderCollection'>", ) # Test FolderQuerySet._copy_cls() self.assertEqual(list(FolderQuerySet(FolderCollection(account=self.account, folders=[])).only("name")), []) fld_qs = SingleFolderQuerySet(account=self.account, folder=self.account.inbox) with self.assertRaises(InvalidField) as e: fld_qs.only("XXX") self.assertIn("Unknown field 'XXX' on folders", e.exception.args[0]) with self.assertRaises(InvalidField) as e: list(fld_qs.filter(XXX="XXX")) self.assertIn("Unknown field path 'XXX' on folders", e.exception.args[0])