async def test_folder_object_remove_passes(self):
     """Test remove object method for folders works."""
     operator = FolderOperator(self.client)
     operator.db_service.remove.return_value = self.test_folder
     await operator.remove_object(self.test_folder, "study", self.accession_id)
     operator.db_service.remove.assert_called_once()
     self.assertEqual(len(operator.db_service.remove.mock_calls), 1)
 async def test_folder_update_fails_with_bad_patch(self):
     """Test folder update raises error with improper JSON Patch."""
     patch = [{"op": "replace", "path": "/nothing"}]
     operator = FolderOperator(self.client)
     operator.db_service.patch.return_value = False
     with self.assertRaises(HTTPBadRequest):
         await operator.update_folder(self.test_folder, patch)
 async def test_deleting_folder_passes(self):
     """Test folder is deleted correctly, if not published."""
     operator = FolderOperator(self.client)
     operator.db_service.published_folder.return_value = False
     operator.db_service.delete.return_value = True
     await operator.delete_folder(self.folder_id)
     operator.db_service.delete.assert_called_with("folder", self.folder_id)
 async def test_check_folder_exists_fails(self):
     """Test fails exists fails."""
     operator = FolderOperator(self.client)
     operator.db_service.exists.return_value = False
     with self.assertRaises(HTTPNotFound):
         await operator.check_folder_exists(self.folder_id)
         operator.db_service.exists.assert_called_once()
 async def test_query_folders_1_item(self):
     """Test query returns a list with item."""
     operator = FolderOperator(self.client)
     operator.db_service.query.return_value = AsyncIterator([{"name": "folder"}])
     folders = await operator.query_folders({})
     operator.db_service.query.assert_called_once()
     self.assertEqual(folders, [{"name": "folder"}])
 async def test_query_folders_empty_list(self):
     """Test query returns empty list."""
     operator = FolderOperator(self.client)
     operator.db_service.query.return_value = AsyncIterator([])
     folders = await operator.query_folders({})
     operator.db_service.query.assert_called_once()
     self.assertEqual(folders, [])
 async def test_create_folder_db_create_fails(self):
     """Test create method for folders db create fails."""
     operator = FolderOperator(self.client)
     data = {"name": "Mock folder", "description": "test mock folder"}
     operator.db_service.create.return_value = False
     with self.assertRaises(HTTPBadRequest):
         await operator.create_folder(data)
 async def test_create_folder_fails(self):
     """Test create method for folders fails."""
     operator = FolderOperator(self.client)
     data = {"name": "Mock folder", "description": "test mock folder"}
     operator.db_service.create.side_effect = ConnectionFailure
     with self.assertRaises(HTTPBadRequest):
         await operator.create_folder(data)
 async def test_reading_folder_works(self):
     """Test folder is read from db correctly."""
     operator = FolderOperator(self.client)
     operator.db_service.read.return_value = self.test_folder
     read_data = await operator.read_folder(self.folder_id)
     operator.db_service.read.assert_called_once_with("folder", self.folder_id)
     self.assertEqual(read_data, self.test_folder)
 async def test_create_folder_works_and_returns_folderId(self):
     """Test create method for folders work."""
     operator = FolderOperator(self.client)
     data = {"name": "Mock folder", "description": "test mock folder"}
     operator.db_service.create.return_value = True
     folder = await operator.create_folder(data)
     operator.db_service.create.assert_called_once()
     self.assertEqual(folder, self.folder_id)
 async def test_deleting_folder_fails_on_delete(self):
     """Test folder fails on db delete, if not published."""
     operator = FolderOperator(self.client)
     operator.db_service.published_folder.return_value = False
     operator.db_service.delete.return_value = False
     with self.assertRaises(HTTPBadRequest):
         await operator.delete_folder(self.folder_id)
         operator.db_service.delete.assert_called_with("folder", self.folder_id)
 async def test_folder_update_passes_and_returns_id(self):
     """Test update method for folders works."""
     patch = [{"op": "add", "path": "/name", "value": "test2"}]
     operator = FolderOperator(self.client)
     operator.db_service.patch.return_value = True
     folder = await operator.update_folder(self.test_folder, patch)
     operator.db_service.patch.assert_called_once()
     self.assertEqual(folder["folderId"], self.folder_id)
 async def test_check_object_folder_multiple_objects_fails(self):
     """Test check object folder returns multiple unique folders."""
     operator = FolderOperator(self.client)
     operator.db_service.query.return_value = AsyncIterator([self.test_folder, self.test_folder])
     with self.assertRaises(HTTPUnprocessableEntity):
         await operator.check_object_in_folder("study", self.accession_id)
         operator.db_service.query.assert_called_once_with(
             "folder", {"metadataObjects": {"$elemMatch": {"accessionId": self.accession_id, "schema": "study"}}}
         )
 async def test_check_object_folder_no_data(self):
     """Test check object folder returns no data."""
     operator = FolderOperator(self.client)
     operator.db_service.query.return_value = AsyncIterator([])
     result = await operator.check_object_in_folder("study", self.accession_id)
     operator.db_service.query.assert_called_once_with(
         "folder", {"metadataObjects": {"$elemMatch": {"accessionId": self.accession_id, "schema": "study"}}}
     )
     self.assertEqual(result, (False, "", False))
 async def test_get_objects_folder_no_data(self):
     """Test get objects from folder returns no data."""
     operator = FolderOperator(self.client)
     operator.db_service.query.return_value = AsyncIterator([])
     result = await operator.get_collection_objects(self.folder_id, "study")
     operator.db_service.query.assert_called_once_with(
         "folder", {"$and": [{"metadataObjects": {"$elemMatch": {"schema": "study"}}}, {"folderId": self.folder_id}]}
     )
     self.assertEqual(result, [])
 async def test_delete_folder_fails(self):
     """Test folder delete fails."""
     operator = FolderOperator(self.client)
     operator.db_service.published_folder.side_effect = ConnectionFailure
     with self.assertRaises(HTTPBadRequest):
         await operator.delete_folder(self.folder_id)
 async def test_check_object_folder_fails(self):
     """Test check object folder fails."""
     operator = FolderOperator(self.client)
     operator.db_service.query.side_effect = ConnectionFailure
     with self.assertRaises(HTTPBadRequest):
         await operator.check_object_in_folder("study", self.accession_id)
 async def test_folder_object_remove_fails(self):
     """Test folder remove object fails."""
     operator = FolderOperator(self.client)
     operator.db_service.remove.side_effect = ConnectionFailure
     with self.assertRaises(HTTPBadRequest):
         await operator.remove_object(self.test_folder, "study", self.accession_id)
 async def test_folder_object_update_fails(self):
     """Test folder update fails."""
     operator = FolderOperator(self.client)
     operator.db_service.patch.side_effect = ConnectionFailure
     with self.assertRaises(HTTPBadRequest):
         await operator.update_folder(self.test_folder, [])
 async def test_get_objects_folder_fails(self):
     """Test check object folder fails."""
     operator = FolderOperator(self.client)
     operator.db_service.query.side_effect = ConnectionFailure
     with self.assertRaises(HTTPBadRequest):
         await operator.get_collection_objects(self.folder_id, "study")
 async def test_folder_object_read_fails(self):
     """Test folder read fails."""
     operator = FolderOperator(self.client)
     operator.db_service.read.side_effect = ConnectionFailure
     with self.assertRaises(HTTPBadRequest):
         await operator.read_folder(self.folder_id)