public async Task Test_DirectoryRepository_Copy_And_Delete_Packages()
        {
            var localRepoFeedConfig = new Settings.Feed
            {
                Name = "local.choco",
            };

            localRepoFeedConfig.Settings.Add("Uri", LocalRepoFolder);

            var tempRepoFeedConfig = new Settings.Feed
            {
                Name = "local.temp.choco",
            };

            tempRepoFeedConfig.Settings.Add("Uri", TempRepoFolder);

            var sourceRepo = new DirectoryRepository(localRepoFeedConfig, LoggerFactory);
            var targetRepo = new DirectoryRepository(tempRepoFeedConfig, LoggerFactory);

            var sourcePackages = await sourceRepo.ListAsync(NotepadPlusPlusPackageId, false, true).ToListAsync();

            foreach (var package in sourcePackages)
            {
                var p = await sourceRepo.FetchAsync(package.Id, package.Version);

                await targetRepo.AddAsync(p);
            }

            var targetPackages = await targetRepo.ListAsync(NotepadPlusPlusPackageId, false, true).ToListAsync();

            Assert.Equal(NotepadPlusPlusPackageCount, sourcePackages.Count);
            Assert.Equal(NotepadPlusPlusPackageCount, targetPackages.Count);

            foreach (var targetPackage in targetPackages)
            {
                await targetRepo.DeleteAsync(targetPackage.Id, targetPackage.Version);
            }

            targetPackages = await targetRepo.ListAsync(NotepadPlusPlusPackageId, false, true).ToListAsync();

            Assert.Empty(targetPackages);
        }
        public async Task Test_DirectoryRepository_List()
        {
            var localRepoFeedConfig = new Settings.Feed
            {
                Name = "local.choco",
            };

            localRepoFeedConfig.Settings.Add("Uri", LocalRepoFolder);

            var sourceRepo = new DirectoryRepository(localRepoFeedConfig, LoggerFactory);

            var packages = await sourceRepo.ListAsync(NotepadPlusPlusPackageId, false, true).ToListAsync();

            var packagesPrerelease          = (await sourceRepo.ListAsync(NotepadPlusPlusPackageId, true, true).ToListAsync()).Where(p => p.IsPrerelease).ToList();
            var packagesIncludingPrerelease = await sourceRepo.ListAsync(NotepadPlusPlusPackageId, true, true).ToListAsync();

            Assert.Equal(NotepadPlusPlusPackageCount, packages.Count);
            Assert.Single(packagesPrerelease);
            Assert.Equal(NotepadPlusPlusPackageCount + NotepadPlusPlusPrereleasePackageCount, packagesIncludingPrerelease.Count);
        }
        public async Task Test_DirectoryRepository_Uri_Doesnt_Exist()
        {
            var localRepoFeedConfig = new Settings.Feed
            {
                Name = "local.choco.notfound",
            };

            localRepoFeedConfig.Settings.Add("Uri", LocalRepoFolder + "-not-found");

            var sourceRepo = new DirectoryRepository(localRepoFeedConfig, LoggerFactory);

            var packages = await sourceRepo.ListAsync(NotepadPlusPlusPackageId, false, true).ToListAsync();

            Assert.Empty(packages);
        }