public async Task Folder_DuplicateFolders_Direct() { await _query.AddItemAsync(new FileIndexItem("/DuplicateFolder"){ IsDirectory = true }); // yes this is duplicate await _query.AddItemAsync(new FileIndexItem("/DuplicateFolder"){ IsDirectory = true }); var storage = new FakeIStorage(new List <string> { "/", "/DuplicateFolder" }); var syncFolder = new SyncFolder(_appSettings, _query, new FakeSelectorStorage(storage), new ConsoleWrapper(), new FakeIWebLogger(), new FakeMemoryCache()); await syncFolder.Folder("/DuplicateFolder"); var allFolders = _query.GetAllFolders().Where(p => p.FilePath == "/DuplicateFolder"); if (allFolders == null) { throw new NullReferenceException( "all folder should not be null"); } Assert.AreEqual("/DuplicateFolder", allFolders.FirstOrDefault(p => p.FilePath == "/DuplicateFolder")?.FilePath); Assert.AreEqual(1, allFolders.Count(p => p.FilePath == "/DuplicateFolder")); }
public async Task Folder_DuplicateChildItems() { var storage = new FakeIStorage( new List <string> { "/", "/Folder_Duplicate" }, new List <string> { "/Folder_Duplicate/test.jpg", }, new List <byte[]> { CreateAnImage.Bytes, }); // yes this is duplicate! await _query.AddItemAsync(new FileIndexItem("/Folder_Duplicate/test.jpg")); await _query.AddItemAsync(new FileIndexItem("/Folder_Duplicate/test.jpg")); // yes this is duplicate! var syncFolder = new SyncFolder(_appSettings, _query, new FakeSelectorStorage(storage), new ConsoleWrapper(), new FakeIWebLogger(), new FakeMemoryCache()); var result = await syncFolder.Folder("/Folder_Duplicate"); Assert.AreEqual(2, result.Count); var queryResult = await _query.GetAllFilesAsync("/Folder_Duplicate"); Assert.AreEqual(1, queryResult.Count); await _query.RemoveItemAsync(queryResult[0]); }
public async Task Folder_Dir_NotFound() { var storage = new FakeIStorage(); var syncFolder = new SyncFolder(_appSettings, _query, new FakeSelectorStorage(storage), new ConsoleWrapper(), new FakeIWebLogger(), new FakeMemoryCache()); var result = await syncFolder.Folder("/not_found"); Assert.AreEqual("/not_found", result[0].FilePath); Assert.AreEqual(FileIndexItem.ExifStatus.NotFoundSourceMissing, result[0].Status); }
public async Task Folder_FolderWithNoContent() { var storage = GetStorage(); var syncFolder = new SyncFolder(_appSettings, _query, new FakeSelectorStorage(storage), new ConsoleWrapper(), new FakeIWebLogger(), new FakeMemoryCache()); var result = await syncFolder.Folder("/folder_no_content"); Assert.AreEqual("/folder_no_content", result[0].FilePath); Assert.AreEqual(FileIndexItem.ExifStatus.Ok, result[0].Status); }
public async Task Folder_InDbButNotOnDisk_Floating_directoriesWithinScanDir() { await _query.AddItemAsync(new FileIndexItem("/Folder_InDbButNotOnDisk4/test.jpg")); await _query.AddItemAsync(new FileIndexItem("/Folder_InDbButNotOnDisk4/test_dir"){ IsDirectory = true }); await _query.AddItemAsync(new FileIndexItem("/Folder_InDbButNotOnDisk4/test_dir/test.jpg")); await _query.AddItemAsync(new FileIndexItem("/Folder_InDbButNotOnDisk4/test_dir/child"){ IsDirectory = true }); await _query.AddItemAsync(new FileIndexItem("/Folder_InDbButNotOnDisk4/test_dir/child/test.jpg")); var storage = new FakeIStorage(new List <string> { "/Folder_InDbButNotOnDisk4", "/Folder_InDbButNotOnDisk4/test_dir" }); var syncFolder = new SyncFolder(_appSettings, _query, new FakeSelectorStorage(storage), new ConsoleWrapper(), new FakeIWebLogger(), new FakeMemoryCache()); var result = await syncFolder.Folder("/Folder_InDbButNotOnDisk4"); Assert.AreEqual("/Folder_InDbButNotOnDisk4/test.jpg", result.FirstOrDefault(p => p.FilePath == "/Folder_InDbButNotOnDisk4/test.jpg").FilePath); Assert.AreEqual("/Folder_InDbButNotOnDisk4", result.FirstOrDefault(p => p.FilePath == "/Folder_InDbButNotOnDisk4").FilePath); Assert.AreEqual(FileIndexItem.ExifStatus.NotFoundSourceMissing, result[0].Status); Assert.AreEqual(FileIndexItem.ExifStatus.NotFoundSourceMissing, result[1].Status); Assert.AreEqual(FileIndexItem.ExifStatus.NotFoundSourceMissing, result[2].Status); var data = await _query.GetAllRecursiveAsync("/Folder_InDbButNotOnDisk4"); Assert.AreEqual(1, data.Count); // Check for database Assert.AreEqual("/Folder_InDbButNotOnDisk4", (await _query.GetObjectByFilePathAsync("/Folder_InDbButNotOnDisk4")).FilePath); Assert.AreEqual("/Folder_InDbButNotOnDisk4/test_dir", (await _query.GetObjectByFilePathAsync("/Folder_InDbButNotOnDisk4/test_dir")).FilePath); Assert.AreEqual(null, await _query.GetObjectByFilePathAsync("/Folder_InDbButNotOnDisk4/test_dir/test.jpg")); Assert.AreEqual(null, await _query.GetObjectByFilePathAsync("/Folder_InDbButNotOnDisk4/test.jpg")); }
public async Task Folder_ShouldAddFolderItSelfAndParentFolders() { var storage = GetStorage(); var folderPath = "/should_add_root"; storage.CreateDirectory(folderPath); var query = new FakeIQuery(); var syncFolder = new SyncFolder(_appSettings, query, new FakeSelectorStorage(storage), new ConsoleWrapper(), new FakeIWebLogger(), new FakeMemoryCache()); var result = await syncFolder.Folder(folderPath); Assert.IsNotNull(query.GetObjectByFilePathAsync("/")); Assert.IsNotNull(query.GetObjectByFilePathAsync(folderPath)); Assert.AreEqual(1, result.Count); Assert.AreEqual(folderPath, result[0].FilePath); Assert.AreEqual(FileIndexItem.ExifStatus.Ok, result[0].Status); }
public async Task Folder_InDbButNotOnDisk() { await _query.AddItemAsync(new FileIndexItem("/Folder_InDbButNotOnDisk/test.jpg")); await _query.AddItemAsync(new FileIndexItem("/Folder_InDbButNotOnDisk/test2.jpg")); var storage = new FakeIStorage(); var syncFolder = new SyncFolder(_appSettings, _query, new FakeSelectorStorage(storage), new ConsoleWrapper(), new FakeIWebLogger(), new FakeMemoryCache()); var result = await syncFolder.Folder("/Folder_InDbButNotOnDisk"); Assert.AreEqual("/Folder_InDbButNotOnDisk/test.jpg", result[0].FilePath); Assert.AreEqual("/Folder_InDbButNotOnDisk/test2.jpg", result[1].FilePath); Assert.AreEqual(FileIndexItem.ExifStatus.NotFoundSourceMissing, result[0].Status); Assert.AreEqual(FileIndexItem.ExifStatus.NotFoundSourceMissing, result[1].Status); Assert.AreEqual(null, _query.SingleItem("/Folder_InDbButNotOnDisk/test.jpg")); Assert.AreEqual(null, _query.SingleItem("/Folder_InDbButNotOnDisk/test2.jpg")); }
public async Task Folder_FileSizeIsChanged() { var subPath = "/change/test_change.jpg"; await _query.AddItemAsync(new FileIndexItem(subPath) { Size = 123456 }); var storage = GetStorage(); await storage.WriteStreamAsync(new MemoryStream(FakeCreateAn.CreateAnImage.Bytes), subPath); var syncFolder = new SyncFolder(_appSettings, _query, new FakeSelectorStorage(storage), new ConsoleWrapper(), new FakeIWebLogger(), new FakeMemoryCache()); var result = await syncFolder.Folder("/change"); Assert.AreEqual(subPath, result[0].FilePath); Assert.AreEqual(FileIndexItem.ExifStatus.Ok, result[0].Status); Assert.IsTrue(result[0].Size != 123456); Assert.IsFalse(string.IsNullOrWhiteSpace(result[0].Tags)); }
public async Task Folder_FilesOnDiskButNotInTheDb() { var storage = new FakeIStorage( new List <string> { "/", "/Folder_FilesOnDiskButNotInTheDb" }, new List <string> { "/Folder_FilesOnDiskButNotInTheDb/test1.jpg", "/Folder_FilesOnDiskButNotInTheDb/test2.jpg", "/Folder_FilesOnDiskButNotInTheDb/test3.jpg", }, new List <byte[]> { CreateAnImage.Bytes, CreateAnImageColorClass.Bytes, CreateAnImageNoExif.Bytes, }); var syncFolder = new SyncFolder(_appSettings, _query, new FakeSelectorStorage(storage), new ConsoleWrapper(), new FakeIWebLogger(), new FakeMemoryCache()); var result = await syncFolder.Folder("/Folder_FilesOnDiskButNotInTheDb"); Assert.AreEqual("/Folder_FilesOnDiskButNotInTheDb/test1.jpg", result[0].FilePath); Assert.AreEqual("/Folder_FilesOnDiskButNotInTheDb/test2.jpg", result[1].FilePath); Assert.AreEqual("/Folder_FilesOnDiskButNotInTheDb/test3.jpg", result[2].FilePath); Assert.AreEqual(FileIndexItem.ExifStatus.Ok, result[0].Status); Assert.AreEqual(FileIndexItem.ExifStatus.Ok, result[1].Status); Assert.AreEqual(FileIndexItem.ExifStatus.Ok, result[2].Status); var files = await _query.GetAllFilesAsync("/Folder_FilesOnDiskButNotInTheDb"); Assert.AreEqual(3, files.Count); Assert.AreEqual(FileIndexItem.ExifStatus.Ok, files[0].Status); Assert.AreEqual(FileIndexItem.ExifStatus.Ok, files[1].Status); Assert.AreEqual(FileIndexItem.ExifStatus.Ok, files[2].Status); }
public async Task Folder_ShouldIgnore() { var storage = new FakeIStorage( new List <string> { "/", "/test_ignore", "/test_ignore/ignore" }, new List <string> { "/test_ignore/ignore/test1.jpg" }, new List <byte[]> { CreateAnImage.Bytes, CreateAnImageColorClass.Bytes, CreateAnImageNoExif.Bytes, }); var appSettings = new AppSettings { DatabaseType = AppSettings.DatabaseTypeList.InMemoryDatabase, Verbose = true, SyncIgnore = new List <string> { "/test_ignore/ignore" } }; var syncFolder = new SyncFolder(appSettings, _query, new FakeSelectorStorage(storage), new ConsoleWrapper(), new FakeIWebLogger(), new FakeMemoryCache()); var result = await syncFolder.Folder("/test_ignore"); Assert.AreEqual("/test_ignore/ignore/test1.jpg", result[0].FilePath); Assert.AreEqual(FileIndexItem.ExifStatus.OperationNotSupported, result[0].Status); var files = await _query.GetAllFilesAsync("/test_ignore"); Assert.AreEqual(0, files.Count); }