public async Task RenameFsTest_FakeIStorage_mergeTwoFolders() { CreateFoldersAndFilesInDatabase(); var existSubFolder = _query.AddItem(new FileIndexItem { FileName = "subfolder", ParentDirectory = _folder1Exist.FilePath, IsDirectory = true, FileHash = "InjectedAsExistSubFolder" }); var existSubFolderChildJpg = _query.AddItem(new FileIndexItem { FileName = "child.jpg", ParentDirectory = _folder1Exist.FilePath + "/subfolder", FileHash = "InjectedAsExistSubFolderChildJpg" }); var initFolderList = new List <string> { "/", _folderExist.FilePath + "/subfolder", _folder1Exist.FilePath, _folderExist.FilePath }; var initFileList = new List <string> { _fileInExist.FilePath, _folder1Exist.FilePath + "/subfolder/child.jpg", _folder1Exist.FilePath + "/subfolder/not_synced_item.jpg" }; var istorage = new FakeIStorage(initFolderList, initFileList); // the call var renameFs = await new RenameService(_query, istorage).Rename("/exist", "/folder1", true); // First check if fakeDisk is changed var folder1Files = istorage.GetAllFilesInDirectory("/folder1").ToList(); var folder1Dir = istorage.GetDirectoryRecursive("/folder1").ToList(); Assert.AreEqual("/folder1/file.jpg", folder1Files[0]); Assert.AreEqual("/folder1/subfolder", folder1Dir[0]); var existDirContent = istorage.GetDirectoryRecursive("/exist").ToList(); var existFolder = istorage.GetAllFilesInDirectory("/exist").ToList(); Assert.AreEqual(0, existDirContent.Count); Assert.AreEqual(0, existFolder.Count); // Now check if FakeDb is changed var all2 = await _query.GetAllRecursiveAsync(); Assert.AreEqual("/folder1/file.jpg", all2.FirstOrDefault(p => p.FileName == "file.jpg" && p.Status != FileIndexItem.ExifStatus.NotFoundSourceMissing).FilePath); Assert.AreEqual("/folder1/subfolder", all2.FirstOrDefault(p => p.FileName == "subfolder" && p.Status != FileIndexItem.ExifStatus.NotFoundSourceMissing).FilePath); Assert.AreEqual("/folder1/subfolder/child.jpg", all2.FirstOrDefault(p => p.FileName == "child.jpg" && p.Status != FileIndexItem.ExifStatus.NotFoundSourceMissing).FilePath); // FileIndexItem.ExifStatus.Ok, /folder1/file.jpg - // FileIndexItem.ExifStatus.Ok, /folder1 // NotFoundSourceMissing /exist var file = renameFs .FirstOrDefault(p => p.FilePath == "/folder1/file.jpg"); var folder1 = renameFs .FirstOrDefault(p => p.FilePath == "/folder1"); var exist = renameFs .FirstOrDefault(p => p.FilePath == "/exist"); Assert.AreEqual("/folder1/file.jpg", file.FilePath); Assert.AreEqual("/folder1", folder1.FilePath); Assert.AreEqual("/exist", exist.FilePath); Assert.AreEqual(FileIndexItem.ExifStatus.Ok, file.Status); Assert.AreEqual(FileIndexItem.ExifStatus.Ok, folder1.Status); Assert.AreEqual(FileIndexItem.ExifStatus.NotFoundSourceMissing, exist.Status); await _query.RemoveItemAsync(existSubFolder); await _query.RemoveItemAsync(existSubFolderChildJpg); RemoveFoldersAndFilesInDatabase(); }