public async Task Preflight_Collections_Enabled() { var metaPreflight = new MetaPreflight(new FakeIQuery(new List <FileIndexItem> { new FileIndexItem("/test.jpg"), new FileIndexItem("/test.dng"), }), new AppSettings(), new FakeSelectorStorage( new FakeIStorage(new List <string>(), new List <string> { "/test.jpg", "/test.dng" }, new [] { CreateAnImage.Bytes, CreateAnImage.Bytes })) , new FakeIWebLogger()); var result = await metaPreflight.Preflight( new FileIndexItem("/test.jpg"), new[] { "/test.jpg" }, true, true, 0); Assert.AreEqual(2, result.fileIndexResultsList.Count); Assert.AreEqual(FileIndexItem.ExifStatus.Ok, result.fileIndexResultsList[0].Status); Assert.AreEqual(FileIndexItem.ExifStatus.Ok, result.fileIndexResultsList[1].Status); }
public async Task Preflight_Deleted() { var metaPreflight = new MetaPreflight(new FakeIQuery(new List <FileIndexItem> { new FileIndexItem("/deleted.jpg") { Tags = "!delete!" } }), new AppSettings(), new FakeSelectorStorage( new FakeIStorage(new List <string>(), new List <string> { "/deleted.jpg" }, new [] { CreateAnImage.Bytes, })), new FakeIWebLogger()); var result = await metaPreflight.Preflight( new FileIndexItem("/deleted.jpg"), new[] { "/deleted.jpg" }, true, true, 0); Assert.AreEqual(FileIndexItem.ExifStatus.Deleted, result.fileIndexResultsList.FirstOrDefault().Status); Assert.AreEqual("!delete!", result.fileIndexResultsList.FirstOrDefault().Tags); }
public async Task Preflight_ReadOnly() { var metaPreflight = new MetaPreflight(new FakeIQuery(new List <FileIndexItem> { new FileIndexItem("/readonly/test.jpg") }), new AppSettings { ReadOnlyFolders = new List <string> { "readonly" } }, new FakeSelectorStorage( new FakeIStorage(new List <string>(), new List <string> { "/readonly/test.jpg" }, new [] { CreateAnImage.Bytes, })), new FakeIWebLogger()); var result = await metaPreflight.Preflight( new FileIndexItem("/readonly/test.jpg"), new[] { "/readonly/test.jpg" }, true, true, 0); Assert.AreEqual(FileIndexItem.ExifStatus.ReadOnly, result.fileIndexResultsList.FirstOrDefault().Status); Assert.AreEqual("", result.fileIndexResultsList.FirstOrDefault().Tags); }
public async Task Preflight_NotFoundNotInIndex() { var metaPreflight = new MetaPreflight(new FakeIQuery(), new AppSettings(), new FakeSelectorStorage(), new FakeIWebLogger()); var result = await metaPreflight.Preflight( new FileIndexItem("test"), new[] { "test" }, true, true, 0); Assert.AreEqual(FileIndexItem.ExifStatus.NotFoundNotInIndex, result.fileIndexResultsList.FirstOrDefault().Status); }
public async Task Update_ChangedFileIndexItemNameContent() { var createAnImage = new CreateAnImage(); InsertSearchData(); var serviceScopeFactory = NewScopeFactory(); var fakeIMetaUpdateService = _serviceProvider.GetService <IMetaUpdateService>() as FakeIMetaUpdateService; Assert.IsNotNull(fakeIMetaUpdateService); fakeIMetaUpdateService.ChangedFileIndexItemNameContent = new List <Dictionary <string, List <string> > >(); var selectorStorage = new FakeSelectorStorage(new StorageSubPathFilesystem(_appSettings, new FakeIWebLogger())); var metaPreflight = new MetaPreflight(_query, _appSettings, selectorStorage, new FakeIWebLogger()); var metaUpdateService = new MetaUpdateService(_query, _exifTool, selectorStorage, new FakeMetaPreflight(), new FakeIWebLogger(), new FakeReadMetaSubPathStorage()); var controller = new MetaUpdateController(metaPreflight, metaUpdateService, new FakeIUpdateBackgroundTaskQueue(), new FakeIWebLogger(), serviceScopeFactory) { ControllerContext = { HttpContext = new DefaultHttpContext() } }; var input = new FileIndexItem { Tags = "test" }; var jsonResult = await controller.UpdateAsync(input, createAnImage.DbPath, false, false) as JsonResult; if (jsonResult == null) { Console.WriteLine("json should not be null"); throw new NullReferenceException(nameof(jsonResult)); } Assert.IsNotNull(fakeIMetaUpdateService); Assert.AreEqual(1, fakeIMetaUpdateService.ChangedFileIndexItemNameContent.Count); var actual = JsonSerializer.Serialize( fakeIMetaUpdateService.ChangedFileIndexItemNameContent[0], DefaultJsonSerializer.CamelCase); var expected = "{\"" + createAnImage.DbPath + "\":[\"tags\"]}"; Assert.AreEqual(expected, actual); }
public void RotationCompare_Minus1() { var metaPreflight = new MetaPreflight(_query, _appSettings, new FakeSelectorStorage(_iStorageFake), new FakeIWebLogger()); var compareList = new List <string>(); var rotationCompare = MetaPreflight.RotationCompare(-1, new FileIndexItem("/test.jpg") { Orientation = FileIndexItem.Rotation.Horizontal }, compareList); Assert.AreEqual(rotationCompare.Orientation, FileIndexItem.Rotation.Rotate270Cw); Assert.AreEqual(compareList.FirstOrDefault(), nameof(FileIndexItem.Orientation).ToLowerInvariant()); }
public void RotationCompare_DoNotRotate() { var metaPreflight = new MetaPreflight(_query, _appSettings, new FakeSelectorStorage(_iStorageFake), new FakeIWebLogger()); var compareList = new List <string>(); var rotationCompare = MetaPreflight.RotationCompare(0, new FileIndexItem("/test.jpg") { Orientation = FileIndexItem.Rotation.Horizontal }, compareList); Assert.AreEqual(rotationCompare.Orientation, FileIndexItem.Rotation.Horizontal); Assert.IsTrue(!compareList.Any()); }
public async Task Update_AllDataIncluded_WithFakeExifTool() { var createAnImage = new CreateAnImage(); InsertSearchData(); var selectorStorage = new FakeSelectorStorage(new StorageSubPathFilesystem(_appSettings, new FakeIWebLogger())); var metaPreflight = new MetaPreflight(_query, _appSettings, selectorStorage, new FakeIWebLogger()); var metaUpdateService = new MetaUpdateService(_query, _exifTool, selectorStorage, new FakeMetaPreflight(), new FakeIWebLogger(), new FakeReadMetaSubPathStorage()); var controller = new MetaUpdateController(metaPreflight, metaUpdateService, _bgTaskQueue, new FakeIWebLogger(), NewScopeFactory()); var input = new FileIndexItem { Tags = "test" }; var jsonResult = await controller.UpdateAsync(input, createAnImage.DbPath, false, false) as JsonResult; if (jsonResult == null) { Console.WriteLine("json should not be null"); throw new NullReferenceException(nameof(jsonResult)); } var fileModel = jsonResult.Value as List <FileIndexItem>; //you could not test because exiftool is an external dependency if (fileModel == null) { throw new NullReferenceException(nameof(fileModel)); } Assert.AreNotEqual(null, fileModel.FirstOrDefault()?.Tags); }
public async Task Update_SourceImageMissingOnDisk_WithFakeExifTool() { await _query.AddItemAsync(new FileIndexItem { FileName = "ApiController_Update_SourceImageMissingOnDisk_WithFakeExifTool.jpg", ParentDirectory = "/", FileHash = "ApiController_Update_SourceImageMissingOnDisk_WithFakeExifTool" }); var selectorStorage = new FakeSelectorStorage(new StorageSubPathFilesystem(_appSettings, new FakeIWebLogger())); var metaPreflight = new MetaPreflight(_query, _appSettings, selectorStorage, new FakeIWebLogger()); var metaUpdateService = new MetaUpdateService(_query, _exifTool, selectorStorage, new FakeMetaPreflight(), new FakeIWebLogger(), new FakeReadMetaSubPathStorage()); var controller = new MetaUpdateController(metaPreflight, metaUpdateService, _bgTaskQueue, new FakeIWebLogger(), NewScopeFactory()) { ControllerContext = { HttpContext = new DefaultHttpContext() } }; // Not Found --> 404 var testElement = new FileIndexItem(); var notFoundResult = await controller.UpdateAsync(testElement, "/ApiController_Update_SourceImageMissingOnDisk_WithFakeExifTool.jpg", false, false) as NotFoundObjectResult; if (notFoundResult == null) { throw new NullReferenceException(nameof(notFoundResult)); } Assert.AreEqual(404, notFoundResult.StatusCode); await _query.RemoveItemAsync(_query.SingleItem("/ApiController_Update_SourceImageMissingOnDisk_WithFakeExifTool.jpg").FileIndexItem); }