Example #1
0
        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"));
        }
Example #2
0
        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]);
        }
Example #3
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);
        }
Example #4
0
        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"));
        }
Example #6
0
        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"));
        }
Example #8
0
        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);
        }
Example #10
0
        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);
        }