public async Task Test_NpmRepository_Delete_Single_Package_Version_Without_Deleting_Other_Versions() { // Exclusively use the express package from this test var sourcePackages = await SourceRepo.ListAsync(null, true, false) .Where(p => p.Id.Equals("@types/express")) .ToListAsync(); // Copy the packages from the source feed to the target feed foreach (var package in sourcePackages) { var p = await SourceRepo.FetchAsync(package.Id, package.Version); await TargetRepo.AddAsync(p); } var targetPackages = await TargetRepo.ListAsync(null, true, false) .Where(p => p.Id.StartsWith("@types/express")) .ToListAsync(); try { Assert.True(targetPackages.Count > 1); var counter = 0; foreach (var targetPackage in targetPackages) { await TargetRepo.DeleteAsync(targetPackage.Id, targetPackage.Version); var remainingPackages = await TargetRepo.ListAsync(null, true, false) .Where(p => p.Id.StartsWith("@types/express")) .ToListAsync(); counter++; Assert.True(remainingPackages.Count == (targetPackages.Count - counter)); } } finally { // Only delete the packages that were added from the source foreach (var targetPackage in sourcePackages) { await TargetRepo.DeleteAsync(targetPackage.Id, targetPackage.Version); } } }
public async Task Test_NpmRepository_Copy_And_Delete_Packages() { // Exclude the express package from this test because it is used in another test var sourcePackages = await SourceRepo.ListAsync(null, true, false) .Where(p => !p.Id.Equals("@types/express", StringComparison.Ordinal)) .ToListAsync(); var targetPackages = await TargetRepo.ListAsync(null, true, false) .Where(p => !p.Id.Equals("@types/express", StringComparison.Ordinal)) .ToListAsync(); var targetPackagesCountBefore = targetPackages.Count; foreach (var package in sourcePackages) { var p = await SourceRepo.FetchAsync(package.Id, package.Version); await TargetRepo.AddAsync(p); } targetPackages = await TargetRepo.ListAsync(null, true, false).ToListAsync(); try { Assert.True(targetPackages.Count > targetPackagesCountBefore); } finally { // Only delete the packages that were added from the source foreach (var targetPackage in sourcePackages) { await TargetRepo.DeleteAsync(targetPackage.Id, targetPackage.Version); } } targetPackages = await TargetRepo.ListAsync(null, true, false) .Where(p => !p.Id.Equals("@types/express", StringComparison.Ordinal)) .ToListAsync(); Assert.Equal(targetPackages.Count, targetPackagesCountBefore); }