public async Task DoesNotFetchLeavesForDeleteEntries() { var items = new[] { new CatalogCommitItem( uri: new Uri("https://example/0"), commitId: null, commitTimeStamp: new DateTime(2018, 1, 1), types: null, typeUris: new List <Uri> { Schema.DataTypes.PackageDetails }, packageIdentity: new PackageIdentity("NuGet.Versioning", NuGetVersion.Parse("1.0.0"))), new CatalogCommitItem( uri: new Uri("https://example/1"), commitId: null, commitTimeStamp: new DateTime(2018, 1, 2), types: null, typeUris: new List <Uri> { Schema.DataTypes.PackageDelete }, packageIdentity: new PackageIdentity("NuGet.Frameworks", NuGetVersion.Parse("2.0.0"))), }; await Target.OnProcessBatchAsync(items); CatalogClient.Verify(x => x.GetPackageDetailsLeafAsync("https://example/0"), Times.Once); CatalogClient.Verify(x => x.GetPackageDetailsLeafAsync(It.IsAny <string>()), Times.Exactly(1)); CatalogClient.Verify(x => x.GetPackageDeleteLeafAsync(It.IsAny <string>()), Times.Never); RegistrationUpdater.Verify( x => x.UpdateAsync( "NuGet.Versioning", It.Is <IReadOnlyList <CatalogCommitItem> >( y => y.Count == 1), It.Is <IReadOnlyDictionary <CatalogCommitItem, PackageDetailsCatalogLeaf> >( y => y.Count == 1)), Times.Once); RegistrationUpdater.Verify( x => x.UpdateAsync( "NuGet.Frameworks", It.Is <IReadOnlyList <CatalogCommitItem> >( y => y.Count == 1), It.Is <IReadOnlyDictionary <CatalogCommitItem, PackageDetailsCatalogLeaf> >( y => y.Count == 0)), Times.Once); }
public async Task RejectsMultipleLeavesForTheSamePackageAtTheSameTime() { var items = new[] { new CatalogCommitItem( uri: new Uri("https://example/0"), commitId: null, commitTimeStamp: new DateTime(2018, 1, 1), types: null, typeUris: new List <Uri> { Schema.DataTypes.PackageDetails }, packageIdentity: new PackageIdentity("NuGet.Versioning", NuGetVersion.Parse("1.0.0"))), new CatalogCommitItem( uri: new Uri("https://example/1"), commitId: null, commitTimeStamp: new DateTime(2018, 1, 1), types: null, typeUris: new List <Uri> { Schema.DataTypes.PackageDetails }, packageIdentity: new PackageIdentity("NuGet.Versioning", NuGetVersion.Parse("1.0.0"))), }; var ex = await Assert.ThrowsAsync <InvalidOperationException>( () => Target.OnProcessBatchAsync(items)); Assert.Equal( "There are multiple catalog leaves for a single package at one time.", ex.Message); RegistrationUpdater.Verify( x => x.UpdateAsync( It.IsAny <string>(), It.IsAny <IReadOnlyList <CatalogCommitItem> >(), It.IsAny <IReadOnlyDictionary <CatalogCommitItem, PackageDetailsCatalogLeaf> >()), Times.Never); }