示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
        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());
        }
示例#7
0
        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());
        }
示例#8
0
        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);
        }
示例#9
0
        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);
        }