コード例 #1
0
        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();
        }