public async Task ExportControllerTest__ThumbFalse_AddXmpFile_CreateListToExport() { var storage = new FakeIStorage(new List <string> { "/" }, new List <string> { _appSettings.DatabasePathToFilePath("/test.dng", false), _appSettings.DatabasePathToFilePath("/test.xmp", false), "/test.dng", "/test.xmp" }); var selectorStorage = new FakeSelectorStorage(storage); var fileIndexResultsList = new List <FileIndexItem> { new FileIndexItem { FileName = "test.dng", ParentDirectory = "/", FileHash = "FileHash", Status = FileIndexItem.ExifStatus.Ok } }; var fakeQuery = new FakeIQuery(fileIndexResultsList); var export = new ExportService(fakeQuery, _appSettings, selectorStorage, new FakeIWebLogger()); var filePaths = await export.CreateListToExport(fileIndexResultsList, false); Assert.AreEqual(true, filePaths[0].Contains("test.dng")); Assert.AreEqual(true, filePaths[1].Contains("test.xmp")); }
public void ExifToolCmdHelper_Update_UpdateLocationAltitudeCommandTest() { var updateModel = new FileIndexItem { LocationAltitude = -41, }; var comparedNames = new List <string> { nameof(FileIndexItem.LocationAltitude).ToLowerInvariant(), }; var folderPaths = new List <string> { "/" }; var inputSubPaths = new List <string> { "/test.jpg" }; var storage = new FakeIStorage(folderPaths, inputSubPaths, null); var fakeExifTool = new FakeExifTool(storage, _appSettings); var helperResult = new ExifToolCmdHelper(fakeExifTool, storage, storage, new FakeReadMeta()).Update(updateModel, inputSubPaths, comparedNames); Assert.AreEqual(true, helperResult.Contains("-GPSAltitude=\"-41")); Assert.AreEqual(true, helperResult.Contains("gpsaltituderef#=\"1")); }
public void Delete_ChildDirectories() { var storage = new FakeIStorage(new List <string> { "/test", "/", "/test/child", "/test/child/child" }, new List <string> (), new List <byte[]>()); var selectorStorage = new FakeSelectorStorage(storage); var fakeQuery = new FakeIQuery(new List <FileIndexItem> { new FileIndexItem("/test") { IsDirectory = true, Tags = "!delete!" }, new FileIndexItem("/test/child") { IsDirectory = true }, new FileIndexItem("/test/child/child") { IsDirectory = true }, }); var deleteItem = new DeleteItem(fakeQuery, new AppSettings(), selectorStorage); var result = deleteItem.Delete("/test", false); Assert.AreEqual(3, result.Count); Assert.AreEqual("/test", result[0].FilePath); Assert.AreEqual("/test/child", result[1].FilePath); Assert.AreEqual("/test/child/child", result[2].FilePath); }
public async Task GeoBackgroundTask_WithResults_NoGps() { _appSettings.Verbose = true; var storage = new FakeIStorage(new List <string> { "/" }, new List <string> { }, new List <byte[]> { } ); var storageSelector = new FakeSelectorStorage(storage); var geoReverseLookup = new FakeIGeoReverseLookup(new List <FileIndexItem> { new FileIndexItem("/test.jpg") { FileHash = "2QOYZWMPACZAJ2MABGMOZ6CCPY" } }); var controller = new GeoBackgroundTask(_appSettings, storageSelector, _geoLocationWrite, _memoryCache, new FakeIWebLogger(), geoReverseLookup); var results = await controller.GeoBackgroundTaskAsync(); Assert.AreEqual(1, results.Count); }
public async Task ThumbnailGenerationTest_CheckIfGenerated_Socket_Success() { var storage = new FakeIStorage(new List <string> { "/" }, new List <string> { "/test.jpg" }, new List <byte[]> { CreateAnImage.Bytes }); var thumbStorage = new FakeIStorage(); var socket = new FakeIWebSocketConnectionsService(); var selectorStorage = new FakeSelectorStorage(storage); var controller = new ThumbnailGenerationController(selectorStorage, new FakeIQuery( new List <FileIndexItem> { new FileIndexItem("/test.jpg") } ), new FakeIWebLogger(), socket); await controller.WorkItem("/", storage, thumbStorage); Assert.AreEqual(1, socket.FakeSendToAllAsync.Count(p => !p.StartsWith("[system]"))); }
public async Task PreGenerateThumbnail_Test() { var storage = new FakeIStorage(new List <string> { "/" }, new List <string> { "/test.jpg" }, new List <byte[]> { CreateAnImageNoExif.Bytes }); var selectorStorage = new FakeSelectorStorage(storage); var service = new WebHtmlPublishService(null, selectorStorage, null, null, null, null, new FakeIWebLogger()); var input = new List <FileIndexItem> { new FileIndexItem("/test.jpg") { FileHash = "test_hash_01" } }.AsEnumerable(); await service.PreGenerateThumbnail(input, ""); Assert.IsTrue(storage.ExistFile("test_hash_01")); }
public async Task RenderCopy_KeyNotFound() { var storage = new FakeIStorage(); var selectorStorage = new FakeSelectorStorage(storage); var appSettings = new AppSettings { PublishProfiles = new Dictionary <string, List <AppSettingsPublishProfiles> > { { "same", new List <AppSettingsPublishProfiles> { new AppSettingsPublishProfiles { ContentType = TemplateContentType.Jpeg, SourceMaxWidth = 300, OverlayMaxWidth = 380, Folder = "1000", Append = "_kl1k" } } } } }; var service = new WebHtmlPublishService(new FakeIPublishPreflight(), selectorStorage, appSettings, new FakeExifTool(storage, appSettings), new FakeIOverlayImage(selectorStorage), new ConsoleWrapper(), new FakeIWebLogger()); var result = await service.RenderCopy(new List <FileIndexItem>(), "test", "test", "/"); Assert.IsNull(result); }
public async Task Rename_Move_FileToFolder_Collections() { var itemInChildFolderPath = "/child_folder/test_10.jpg"; await _query.AddItemAsync(new FileIndexItem(itemInChildFolderPath)); await _query.AddItemAsync(new FileIndexItem("/child_folder/test_10.png")); await _query.AddParentItemsAsync(itemInChildFolderPath); var iStorage = new FakeIStorage(new List <string> { "/", "/child_folder", "/child_folder2" }, new List <string> { "/child_folder/test_10.jpg", "/child_folder/test_10.png" }); var renameFs = await new RenameService(_query, iStorage) .Rename(itemInChildFolderPath, "/child_folder2"); // the first one is the deleted item Assert.AreEqual("/child_folder2", renameFs[1].ParentDirectory); Assert.AreEqual("/child_folder2/test_10.jpg", renameFs[1].FilePath); Assert.AreEqual("/child_folder2/test_10.jpg", _query.SingleItem("/child_folder2/test_10.jpg").FileIndexItem.FilePath); Assert.AreEqual("/child_folder2/test_10.png", _query.SingleItem("/child_folder2/test_10.png").FileIndexItem.FilePath); Assert.AreEqual(null, _query.SingleItem(itemInChildFolderPath)); Assert.AreEqual(null, _query.SingleItem("/child_folder/test_10.png")); }
public void InputOutputSubPathsPreflight_FileToDeleted_SingleItem_Change_Extension_WithCollections() { var itemInChildFolderPath1 = "/child_folder/test_24.jpg"; var collectionItemPath1 = "/child_folder/test_24.dng"; _query.AddItem(new FileIndexItem(itemInChildFolderPath1)); _query.AddItem(new FileIndexItem(collectionItemPath1)); _query.AddParentItemsAsync(itemInChildFolderPath1).ConfigureAwait(false); var iStorage = new FakeIStorage(new List <string> { "/", "/child_folder", "/child_folder2" }, new List <string> { itemInChildFolderPath1, collectionItemPath1 }); var((inputFileSubPaths, toFileSubPaths), fileIndexResultsList) = new RenameService(_query, iStorage) .InputOutputSubPathsPreflight($"{itemInChildFolderPath1}", // Change to .jpeg "/child_folder2/test_24.jpeg", true); Assert.AreEqual(itemInChildFolderPath1, inputFileSubPaths[0]); Assert.AreEqual(collectionItemPath1, inputFileSubPaths[1]); Assert.AreEqual("/child_folder2/test_24.jpeg", toFileSubPaths[0]); Assert.AreEqual("/child_folder2/test_24.dng", toFileSubPaths[1]); Assert.AreEqual(0, fileIndexResultsList.Count); // this does only preflight _query.RemoveItem(_query.SingleItem(itemInChildFolderPath1).FileIndexItem); _query.RemoveItem(_query.SingleItem(collectionItemPath1).FileIndexItem); }
public async Task RenameFsTest_FakeIStorage_File_To_ExistFolder_Json_SidecarFile() { CreateFoldersAndFilesInDatabase(); var initFolderList = new List <string> { "/", "/test" }; var initFileList = new List <string> { _fileInExist.FilePath, JsonSidecarLocation.JsonLocation(_fileInExist.FilePath) }; var iStorage = new FakeIStorage(initFolderList, initFileList); // the input is still FileName = "file.jpg", ParentDirectory = "/exist", var renameFs = await new RenameService(_query, iStorage) .Rename(initFileList.FirstOrDefault(), "/test/", true); // to file: (in database) var all2 = await _query.GetAllRecursiveAsync(); var selectFile3 = all2.FirstOrDefault(p => p.FileName == "file.jpg"); Assert.AreEqual("file.jpg", selectFile3.FileName); Assert.AreEqual("/test", selectFile3.ParentDirectory); // check if sidecar json are moved (on fake Filesystem) var values = iStorage.GetAllFilesInDirectoryRecursive("/test").ToList(); Assert.AreEqual("/test/.starsky.file.jpg.json", values.FirstOrDefault(p => p == "/test/.starsky.file.jpg.json")); Assert.AreEqual(FileIndexItem.ExifStatus.NotFoundSourceMissing, renameFs.FirstOrDefault().Status); Assert.AreEqual(FileIndexItem.ExifStatus.Ok, renameFs[1].Status); RemoveFoldersAndFilesInDatabase(); }
public async Task Rename_MoveFileToRootFolder() { var itemInChildFolderPath = "/child_folder/test_01.jpg"; await _query.AddItemAsync(new FileIndexItem(itemInChildFolderPath)); await _query.AddParentItemsAsync(itemInChildFolderPath); var iStorage = new FakeIStorage(new List <string> { "/", "/child_folder" }, new List <string> { "/child_folder/test_01.jpg" }); var renameFs = await new RenameService(_query, iStorage).Rename(itemInChildFolderPath, "/"); // where its from Assert.AreEqual("/child_folder", renameFs.FirstOrDefault().ParentDirectory); Assert.AreEqual("/child_folder/test_01.jpg", renameFs.FirstOrDefault().FilePath); Assert.AreEqual("/", renameFs[1].ParentDirectory); Assert.AreEqual("/test_01.jpg", renameFs[1].FilePath); Assert.AreEqual("/test_01.jpg", _query.SingleItem("/test_01.jpg").FileIndexItem.FilePath); Assert.AreEqual(null, _query.SingleItem(itemInChildFolderPath)); }
public async Task RenameFsTest_FakeIStorage_File_To_ExistFolder() // there is a separate sidecar json test { CreateFoldersAndFilesInDatabase(); var initFolderList = new List <string> { "/", "/test" }; var initFileList = new List <string> { _fileInExist.FilePath }; var fakeIStorage = new FakeIStorage(initFolderList, initFileList); var renameFsResult = await new RenameService(_query, fakeIStorage). Rename(initFileList.FirstOrDefault(), "/test/", true); var oldItem = await _query.GetObjectByFilePathAsync("/exist/file.jpg"); Assert.IsNull(oldItem); // to file: (in database) var all2 = (await _query.GetAllRecursiveAsync()).Where(p => p.ParentDirectory.Contains("/test")); var selectFile3 = all2.FirstOrDefault(p => p.FilePath == "/test/file.jpg"); Assert.AreEqual("file.jpg", selectFile3.FileName); Assert.AreEqual("/test", selectFile3.ParentDirectory); // check if files are moved (on fake Filesystem) var values = fakeIStorage.GetAllFilesInDirectory("/test").ToList(); Assert.AreEqual("/test/file.jpg", values.FirstOrDefault(p => p == "/test/file.jpg")); Assert.AreEqual(FileIndexItem.ExifStatus.NotFoundSourceMissing, renameFsResult.FirstOrDefault().Status); Assert.AreEqual(FileIndexItem.ExifStatus.Ok, renameFsResult[1].Status); RemoveFoldersAndFilesInDatabase(); }
public async Task RenameFsTest_RenameOneFile_JsonSidecarFile() { CreateFoldersAndFilesInDatabase(); var iStorage = new FakeIStorage(new List <string> { _folderExist.FilePath }, new List <string> { _fileInExist.FilePath, JsonSidecarLocation.JsonLocation(_fileInExist.FilePath) }); var renameFs = await new RenameService(_query, iStorage) .Rename(_fileInExist.FilePath, _folderExist.FilePath + "/test2.jpg"); // check if sidecar json are moved (on fake Filesystem) var values = iStorage.GetAllFilesInDirectoryRecursive("/").ToList(); Assert.AreEqual("/exist/.starsky.test2.jpg.json", values.FirstOrDefault(p => p == "/exist/.starsky.test2.jpg.json")); Assert.AreEqual(FileIndexItem.ExifStatus.Ok, renameFs.FirstOrDefault(p => p.FilePath == "/exist/test2.jpg").Status); Assert.AreEqual(FileIndexItem.ExifStatus.NotFoundSourceMissing, renameFs.FirstOrDefault(p => p.FilePath == "/exist/file.jpg").Status); RemoveFoldersAndFilesInDatabase(); }
public async Task RenameFsTest_FakeIStorage_RenameOneFile() { // RenameFsTest_MoveFileToSameFolder_Items CreateFoldersAndFilesInDatabase(); var iStorage = new FakeIStorage(new List <string> { _folderExist.FilePath }, new List <string> { _fileInExist.FilePath }); var renameFs1 = await new RenameService(_query, iStorage) .Rename(_fileInExist.FilePath, _folderExist.FilePath + "/test2.jpg"); var renameFs = renameFs1.Where(p => p.Status != FileIndexItem.ExifStatus.NotFoundSourceMissing).ToList(); // query database var all = await _query.GetAllRecursiveAsync(); Assert.AreEqual("test2.jpg", all.FirstOrDefault(p => p.FileName == "test2.jpg")?.FileName); // old item is not in db Assert.AreEqual(null, all.FirstOrDefault(p => p.FileName == "test.jpg")?.FileName); // use cached view var singleItem = _query.SingleItem(_folderExist.FilePath + "/test2.jpg"); Assert.AreEqual("test2.jpg", singleItem.FileIndexItem.FileName); Assert.AreEqual(1, renameFs.Count); RemoveFoldersAndFilesInDatabase(); }
public void ListSizesByHash_ExpectLarge() { var item = _query.AddItem(new FileIndexItem("/test123.jpg") { FileHash = "01234567890123456789123456" }); // Arrange var storage = new FakeIStorage(new List <string>(), new List <string> { "01234567890123456789123456" }); // Check if exist var controller = new ThumbnailController(_query, new FakeSelectorStorage(storage)); controller.ControllerContext.HttpContext = new DefaultHttpContext(); var actionResult = controller.ListSizesByHash("01234567890123456789123456") as JsonResult; // Thumbnail exist Assert.AreNotEqual(actionResult, null); var thumbnailAnswer = actionResult.Value as ThumbnailSizesExistStatusModel; Assert.AreEqual(202, controller.Response.StatusCode); Assert.AreEqual(true, thumbnailAnswer.Large); Assert.AreEqual(false, thumbnailAnswer.ExtraLarge); Assert.AreEqual(false, thumbnailAnswer.TinyMeta); _query.RemoveItem(item); }
public async Task Rename_Move_SidecarFile_ShouldMove_FileToFolder() { // var item1 = "/child_folder/test_20.jpg"; var item1dng = "/child_folder/test_20.dng"; var item1SideCar = "/child_folder/test_20.xmp"; // _query.AddItem(new FileIndexItem(item1)); await _query.AddItemAsync(new FileIndexItem(item1dng)); await _query.AddParentItemsAsync(item1dng); var iStorage = new FakeIStorage(new List <string> { "/", "/child_folder", "/child_folder2" }, new List <string> { item1dng, item1SideCar }); // item1 // Move DNG to different folder var renameFs = await new RenameService(_query, iStorage) .Rename(item1dng, "/child_folder2"); Assert.AreEqual(item1dng, renameFs[0].FilePath); Assert.AreEqual(item1dng.Replace("child_folder", "child_folder2"), renameFs[1].FilePath); // did move the side car file Assert.IsTrue(iStorage.ExistFile(item1SideCar.Replace("child_folder", "child_folder2"))); }
public void ListSizesByHash_IgnoreRaw() { var item = _query.AddItem(new FileIndexItem("/test123.arw") { FileHash = "91234567890123456789123451" }); // Arrange var storage = new FakeIStorage(new List <string>(), new List <string> { "91234567890123456789123451" }); // Check if exist var controller = new ThumbnailController(_query, new FakeSelectorStorage(storage)); controller.ControllerContext.HttpContext = new DefaultHttpContext(); var actionResult = controller.ListSizesByHash("91234567890123456789123451") as JsonResult; // Thumbnail exist Assert.AreNotEqual(actionResult, null); Assert.AreEqual(210, controller.Response.StatusCode); _query.RemoveItem(item); }
public async Task Rename_Move_SidecarFile_ShouldNotMove_FileToFolder_ItsAJpeg() { var item1 = "/child_folder/test_20.jpg"; var item1SideCar = "/child_folder/test_20.xmp"; await _query.AddItemAsync(new FileIndexItem(item1)); await _query.AddParentItemsAsync(item1); var iStorage = new FakeIStorage(new List <string> { "/", "/child_folder", "/child_folder2" }, new List <string> { item1, item1SideCar }); // Move Jpg to different folder but the xmp should be ignored var renameFs = await new RenameService(_query, iStorage) .Rename(item1, "/child_folder2"); Assert.AreEqual(item1, renameFs.FirstOrDefault().FilePath); Assert.AreEqual(item1.Replace("child_folder", "child_folder2"), renameFs[1].FilePath); // it should not move the sidecar file Assert.IsFalse(iStorage.ExistFile(item1SideCar.Replace("child_folder", "child_folder2"))); }
public void ShouldSkipExtraLarge_SkipExtraLarge() { var storage = new FakeIStorage(new List <string> { "/" }, new List <string> { "/test.jpg" }, new List <byte[]> { new byte[10] }); var selectorStorage = new FakeSelectorStorage(storage); var service = new WebHtmlPublishService(new FakeIPublishPreflight(new List <AppSettingsPublishProfiles> { { new AppSettingsPublishProfiles { SourceMaxWidth = 1000 } } }), selectorStorage, null, null, null, null, new FakeIWebLogger()); var result = service.ShouldSkipExtraLarge(""); Assert.IsTrue(result); }
public void InputOutputSubPathsPreflight_FileToFolder_SingleItemWithCollectionsEnabled() { var itemInChildFolderPath1 = "/child_folder/test_07.jpg"; var collectionItemPath1 = "/child_folder/test_07.png"; _query.AddItem(new FileIndexItem(itemInChildFolderPath1)); _query.AddItem(new FileIndexItem(collectionItemPath1)); _query.AddParentItemsAsync(itemInChildFolderPath1).ConfigureAwait(false); var iStorage = new FakeIStorage(new List <string> { "/", "/child_folder", "/child_folder2" }, new List <string> { itemInChildFolderPath1, collectionItemPath1 }); var((inputFileSubPaths, toFileSubPaths), fileIndexResultsList) = new RenameService(_query, iStorage) .InputOutputSubPathsPreflight($"{itemInChildFolderPath1}", "/child_folder2", true); Assert.AreEqual(itemInChildFolderPath1, inputFileSubPaths[0]); Assert.AreEqual(collectionItemPath1, inputFileSubPaths[1]); Assert.AreEqual("/child_folder2", toFileSubPaths[0]); Assert.AreEqual("/child_folder2", toFileSubPaths[1]); Assert.AreEqual(0, fileIndexResultsList.Count); _query.RemoveItem(_query.SingleItem(itemInChildFolderPath1).FileIndexItem); _query.RemoveItem(_query.SingleItem(collectionItemPath1).FileIndexItem); }
public ReplaceServiceTest() { var provider = new ServiceCollection() .AddMemoryCache() .BuildServiceProvider(); var memoryCache = provider.GetService <IMemoryCache>(); var builder = new DbContextOptionsBuilder <ApplicationDbContext>(); builder.UseInMemoryDatabase(nameof(MetaReplaceService)); var options = builder.Options; var dbContext = new ApplicationDbContext(options); _query = new Query(dbContext, new AppSettings(), null, new FakeIWebLogger(), memoryCache); _iStorage = new FakeIStorage(new List <string> { "/" }, new List <string> { "/test.jpg", "/test2.jpg", "/readonly/test.jpg", "/test.dng" }); _metaReplace = new MetaReplaceService(_query, new AppSettings { ReadOnlyFolders = new List <string> { "/readonly" } }, new FakeSelectorStorage(_iStorage), new FakeIWebLogger()); }
public async Task UpdateTransformations_ShouldNotUpdate_IndexOff() { var storage = new FakeIStorage( new List <string> { "/" }, new List <string> { "/test.jpg", "/test.xmp" }, new List <byte[]> { CreateAnPng.Bytes, CreateAnXmp.Bytes }); var appSettings = new AppSettings(); var updateImportTransformations = new UpdateImportTransformations(new FakeIWebLogger(), new FakeExifTool(storage, appSettings), new FakeSelectorStorage(storage), appSettings); var query = new FakeIQuery(); await query.AddItemAsync(new FileIndexItem("/test.jpg"){ FileHash = "test" }); UpdateImportTransformations.QueryUpdateDelegate updateItemAsync = query.UpdateItemAsync; await updateImportTransformations.UpdateTransformations(updateItemAsync, new FileIndexItem("/test.jpg"){ ColorClass = ColorClassParser.Color.Typical }, 0, false, false); var updatedItem = await query.GetObjectByFilePathAsync("/test.jpg"); // Are NOT equal! Assert.AreNotEqual(ColorClassParser.Color.Typical, updatedItem.ColorClass); }
public async Task ThumbnailGenerationTest_CheckIfGenerated() { var storage = new FakeIStorage(new List <string> { "/" }, new List <string> { "/test.jpg" }, new List <byte[]> { CreateAnImage.Bytes }); var thumbStorage = new FakeIStorage(); var selectorStorage = new FakeSelectorStorage(storage); var controller = new ThumbnailGenerationController(selectorStorage, new FakeIQuery( new List <FileIndexItem> { new FileIndexItem("/test.jpg") } ), new FakeIWebLogger(), new FakeIWebSocketConnectionsService()); await controller.WorkItem("/", storage, thumbStorage); var folder = thumbStorage.GetAllFilesInDirectoryRecursive( "/").ToList(); Assert.AreEqual(1, folder.Count(p => !p.Contains("@"))); }
public async Task UpdateTransformations_ShouldUpdate_Description_IndexModeOn() { var storage = new FakeIStorage( new List <string> { "/" }, new List <string> { "/test.jpg", "/test.xmp" }, new List <byte[]> { CreateAnPng.Bytes, CreateAnXmp.Bytes }); var appSettings = new AppSettings(); var updateImportTransformations = new UpdateImportTransformations(new FakeIWebLogger(), new FakeExifTool(storage, appSettings), new FakeSelectorStorage(storage), appSettings); var query = new FakeIQuery(); await query.AddItemAsync(new FileIndexItem("/test.jpg"){ FileHash = "test" }); UpdateImportTransformations.QueryUpdateDelegate updateItemAsync = query.UpdateItemAsync; await updateImportTransformations.UpdateTransformations(updateItemAsync, new FileIndexItem("/test.jpg"){ Description = "test-ung" }, -1, true, true); var updatedItem = await query.GetObjectByFilePathAsync("/test.jpg"); Assert.AreEqual("test-ung", updatedItem.Description); }
public async Task UpdateAsync_ShouldUpdate_IncludeFileHash() { var updateModel = new FileIndexItem { Tags = "tags", Description = "Description", FileHash = "_hash_test" // < - - - - include here }; var comparedNames = new List <string> { nameof(FileIndexItem.Tags).ToLowerInvariant(), nameof(FileIndexItem.Description).ToLowerInvariant(), }; var storage = new FakeIStorage(new List <string> { "/" }, new List <string> { "/test.jpg" }, new List <byte[]>()); var fakeExifTool = new FakeExifTool(storage, _appSettings); var helperResult = (await new ExifToolCmdHelper(fakeExifTool, storage, storage, new FakeReadMeta()).UpdateAsync(updateModel, comparedNames, true)); Assert.IsTrue(helperResult.Item1.Contains("tags")); Assert.IsTrue(helperResult.Item1.Contains("Description")); }
public async Task GeoCliInput_Default_HappyFlow() { var fakeIHttpProvider = new FakeIHttpProvider(new Dictionary <string, HttpContent> { }); var httpClientHelper = new HttpClientHelper(fakeIHttpProvider, _serviceScopeFactory, new FakeIWebLogger()); var storage = new FakeIStorage(new List <string> { "/" }, new List <string> { "/test.jpg" }, new List <byte[]> { CreateAnImage.Bytes }); var hash = (await new FileHash(storage).GetHashCodeAsync("/test.jpg")).Key; storage.FileCopy("/test.jpg", $"/{hash}.jpg"); var geoWrite = new FakeIGeoLocationWrite(); var geoLookup = new FakeIGeoReverseLookup(); var console = new FakeConsoleWrapper(); var geoCli = new GeoCli(geoLookup, geoWrite, new FakeSelectorStorage(storage), new AppSettings(), console, new FakeIGeoFileDownload(), new FakeExifToolDownload()); await geoCli.CommandLineAsync(new List <string> { "-p", }.ToArray()); Assert.AreEqual(1, geoLookup.Count); Assert.IsTrue(storage.ExistFile($"/{hash}.jpg")); Assert.IsTrue(storage.ExistFile("/test.jpg")); }
public void Delete_DirectoryWithChildItems_CollectionsOff() { var storage = new FakeIStorage(new List <string> { "/test", "/" }, new List <string> { "/test/image.jpg", "/test/image.dng" }, new List <byte[]> { FakeCreateAn.CreateAnImage.Bytes, FakeCreateAn.CreateAnImage.Bytes }); var selectorStorage = new FakeSelectorStorage(storage); var fakeQuery = new FakeIQuery(new List <FileIndexItem> { new FileIndexItem("/test") { IsDirectory = true, Tags = "!delete!" }, new FileIndexItem("/test/image.jpg"), new FileIndexItem("/test/image.dng") }); var deleteItem = new DeleteItem(fakeQuery, new AppSettings(), selectorStorage); var result = deleteItem.Delete("/test", false); Assert.AreEqual(3, result.Count); Assert.AreEqual("/test", result[0].FilePath); Assert.AreEqual("/test/image.jpg", result[1].FilePath); Assert.AreEqual("/test/image.dng", result[2].FilePath); Assert.AreEqual(0, storage.GetAllFilesInDirectoryRecursive("/").Count()); Assert.AreEqual(0, fakeQuery.GetAllRecursive("/").Count); }
public async Task GeoCliInput_AbsolutePath_HappyFlow() { var fakeIHttpProvider = new FakeIHttpProvider(new Dictionary <string, HttpContent> { }); var httpClientHelper = new HttpClientHelper(fakeIHttpProvider, _serviceScopeFactory, new FakeIWebLogger()); var storage = new FakeIStorage(new List <string> { "/" }, new List <string> { "/test.jpg" }, new List <byte[]> { CreateAnImage.Bytes }); var appSettings = new AppSettings { Verbose = true }; var geoWrite = new FakeIGeoLocationWrite(); var geoLookup = new FakeIGeoReverseLookup(); var console = new FakeConsoleWrapper(); var geoCli = new GeoCli(geoLookup, geoWrite, new FakeSelectorStorage(storage), appSettings, console, new FakeIGeoFileDownload(), new FakeExifToolDownload()); await geoCli.CommandLineAsync(new List <string> { "-p", "/test" }.ToArray()); Assert.AreEqual(appSettings.StorageFolder, "/test" + Path.DirectorySeparatorChar); Assert.AreEqual(1, geoLookup.Count); Assert.IsTrue(storage.ExistFile("/test.jpg")); }
public void Delete_IsFileRemoved() { var storage = new FakeIStorage(new List <string> { "/" }, new List <string> { "/test.jpg" }, new List <byte[]> { FakeCreateAn.CreateAnImage.Bytes }); var selectorStorage = new FakeSelectorStorage(storage); var fakeQuery = new FakeIQuery(new List <FileIndexItem> { new FileIndexItem("/test.jpg") { Tags = "!delete!" } }); var deleteItem = new DeleteItem(fakeQuery, new AppSettings(), selectorStorage); var result = deleteItem.Delete("/test.jpg", true); Assert.AreEqual(FileIndexItem.ExifStatus.Ok, result.FirstOrDefault().Status); Assert.IsNull(fakeQuery.GetObjectByFilePath("/test.jpg")); Assert.IsFalse(storage.ExistFile("/test.jpg")); }
public async Task CreateThumbTest_FileHash_SkipExtraLarge() { var storage = new FakeIStorage(new List <string> { "/" }, new List <string> { _fakeIStorageImageSubPath }, new List <byte[]> { CreateAnImage.Bytes }); var fileHash = "test_hash"; // skip xtra large var isCreated = await new Thumbnail(storage, storage, new FakeIWebLogger()).CreateThumb( _fakeIStorageImageSubPath, fileHash, true); Assert.AreEqual(true, isCreated); Assert.AreEqual(true, storage.ExistFile(fileHash)); Assert.AreEqual(true, storage.ExistFile( ThumbnailNameHelper.Combine(fileHash, ThumbnailSize.Small))); Assert.AreEqual(false, storage.ExistFile( ThumbnailNameHelper.Combine(fileHash, ThumbnailSize.ExtraLarge))); }