Esempio n. 1
0
        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"));
        }
Esempio n. 2
0
        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"));
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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]")));
        }
Esempio n. 6
0
        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"));
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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"));
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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();
        }
Esempio n. 11
0
        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));
        }
Esempio n. 12
0
        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();
        }
Esempio n. 13
0
        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();
        }
Esempio n. 14
0
        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();
        }
Esempio n. 15
0
        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);
        }
Esempio n. 16
0
        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")));
        }
Esempio n. 17
0
        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);
        }
Esempio n. 18
0
        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")));
        }
Esempio n. 19
0
        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);
        }
Esempio n. 20
0
        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);
        }
Esempio n. 21
0
        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());
        }
Esempio n. 22
0
        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);
        }
Esempio n. 23
0
        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("@")));
        }
Esempio n. 24
0
        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);
        }
Esempio n. 25
0
        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"));
        }
Esempio n. 26
0
        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"));
        }
Esempio n. 27
0
        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);
        }
Esempio n. 28
0
        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"));
        }
Esempio n. 29
0
        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"));
        }
Esempio n. 30
0
        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)));
        }