public void ReplacesNonLatestFullVersionByNormalizedVersion() { ClearList(); var latest = new FilteredVersionProperties("2.0.0", listed: true); _list.Upsert(latest); _list.Upsert(new FilteredVersionProperties("1.02.0-Alpha.1+git", listed: true)); var properties = new FilteredVersionProperties("1.2.0.0-ALPHA.1+somethingelse", listed: true); var output = _list.Upsert(properties); Assert.Equal(SearchIndexChangeType.UpdateVersionList, output.Search); Assert.Equal( new[] { HijackIndexChange.UpdateMetadata(properties.ParsedVersion), HijackIndexChange.SetLatestToFalse(properties.ParsedVersion), HijackIndexChange.SetLatestToTrue(latest.ParsedVersion), }, output.Hijack.ToArray()); Assert.Equal(latest.FullVersion, _list.GetLatestVersionInfo().FullVersion); Assert.Equal(latest.ParsedVersion, _list._latestOrNull); Assert.Equal(new[] { properties.FullVersion, latest.FullVersion }, _list.GetLatestVersionInfo().ListedFullVersions); Assert.Equal( new[] { properties.ParsedVersion, latest.ParsedVersion }, _list._versions.Keys.ToArray()); }
public void MapsProperties() { var v1 = NuGetVersion.Parse("1.0.0"); var changes = MutableIndexChanges.FromLatestIndexChanges(new Dictionary <SearchFilters, LatestIndexChanges> { { SearchFilters.Default, new LatestIndexChanges( SearchIndexChangeType.AddFirst, new List <HijackIndexChange> { HijackIndexChange.UpdateMetadata(v1), HijackIndexChange.SetLatestToTrue(v1), }) }, }); var solid = changes.Solidify(); Assert.Equal(new[] { SearchFilters.Default }, solid.Search.Keys.ToArray()); Assert.Equal(SearchIndexChangeType.AddFirst, solid.Search[SearchFilters.Default]); Assert.False(solid.Hijack[v1].Delete); Assert.True(solid.Hijack[v1].UpdateMetadata); Assert.True(solid.Hijack[v1].LatestStableSemVer1); Assert.False(solid.Hijack[v1].LatestSemVer1); Assert.False(solid.Hijack[v1].LatestStableSemVer2); Assert.False(solid.Hijack[v1].LatestSemVer2); }
private static IReadOnlyList <HijackIndexChange> UpsertToHijackIndex(Context ctx) { var changes = new List <HijackIndexChange>(); // Update the metadata for the upserted version. changes.Add(HijackIndexChange.UpdateMetadata(ctx.ChangedVersion)); // If the new latest is not the version that we are processing right now, explicitly set the current version // to not be the latest. This supports the reflow scenario. if (ctx.NewLatest != ctx.ChangedVersion) { changes.Add(HijackIndexChange.SetLatestToFalse(ctx.ChangedVersion)); } // If the latest version has changed and the old latest version existed, mark that old latest version as // no longer latest. if (ctx.OldLatest != null && ctx.OldLatest != ctx.NewLatest && ctx.OldLatest != ctx.ChangedVersion) { changes.Add(HijackIndexChange.SetLatestToFalse(ctx.OldLatest)); } // Always mark the new latest version as latest, even if it has not changed. This supports the reflow // scenario. if (ctx.NewLatest != null) { changes.Add(HijackIndexChange.SetLatestToTrue(ctx.NewLatest)); } return(changes); }
private static IReadOnlyList <HijackIndexChange> DeleteFromHijackIndex(Context ctx) { var changes = new List <HijackIndexChange>(); // Delete the document for the deleted version. changes.Add(HijackIndexChange.Delete(ctx.ChangedVersion)); // Update the latest status of the latest version, if there is one. if (ctx.NewLatest != null) { Guard.Assert(ctx.ChangedVersion != ctx.NewLatest, "The deleted version should not be the new latest version."); changes.Add(HijackIndexChange.SetLatestToTrue(ctx.NewLatest)); } return(changes); }
public void RelistingLatestVersion() { var output = _list.Upsert(_initialVersionProperties); Assert.Equal(SearchIndexChangeType.UpdateLatest, output.Search); Assert.Equal( new[] { HijackIndexChange.UpdateMetadata(InitialParsedVersion), HijackIndexChange.SetLatestToTrue(InitialParsedVersion), }, output.Hijack.ToArray()); Assert.Equal(InitialFullVersion, _list.GetLatestVersionInfo().FullVersion); Assert.Equal(InitialParsedVersion, _list._latestOrNull); Assert.Equal(new[] { InitialFullVersion }, _list.GetLatestVersionInfo().ListedFullVersions); Assert.Equal(new[] { InitialParsedVersion }, _list._versions.Keys.ToArray()); }
public void DeletesNewVersion(string version) { var parsedVersion = NuGetVersion.Parse(version); var output = _list.Delete(parsedVersion); Assert.Equal(SearchIndexChangeType.UpdateVersionList, output.Search); Assert.Equal( new[] { HijackIndexChange.Delete(parsedVersion), HijackIndexChange.SetLatestToTrue(InitialParsedVersion), }, output.Hijack.ToArray()); Assert.Equal(InitialFullVersion, _list.GetLatestVersionInfo().FullVersion); Assert.Equal(InitialParsedVersion, _list._latestOrNull); Assert.Equal(new[] { InitialFullVersion }, _list.GetLatestVersionInfo().ListedFullVersions); Assert.Equal(new[] { InitialParsedVersion }, _list._versions.Keys.ToArray()); }
public void DeletesLatestListedVersionWithTwoOtherVersions() { _list.Upsert(new FilteredVersionProperties(PreviousFullVersion, listed: true)); _list.Upsert(new FilteredVersionProperties(NextFullVersion, listed: true)); var output = _list.Delete(NextParsedVersion); Assert.Equal(SearchIndexChangeType.DowngradeLatest, output.Search); Assert.Equal( new[] { HijackIndexChange.Delete(NextParsedVersion), HijackIndexChange.SetLatestToTrue(InitialParsedVersion), }, Enumerable.ToArray(output.Hijack)); Assert.Equal(InitialFullVersion, _list.GetLatestVersionInfo().FullVersion); Assert.Equal(InitialParsedVersion, _list._latestOrNull); Assert.Equal(new[] { PreviousFullVersion, InitialFullVersion }, _list.GetLatestVersionInfo().ListedFullVersions); Assert.Equal(new[] { PreviousParsedVersion, InitialParsedVersion }, _list._versions.Keys.ToArray()); }
public void AddingListedNonLatestVersion() { var listed = new FilteredVersionProperties(PreviousFullVersion, listed: true); var output = _list.Upsert(listed); Assert.Equal(SearchIndexChangeType.UpdateVersionList, output.Search); Assert.Equal( new[] { HijackIndexChange.UpdateMetadata(listed.ParsedVersion), HijackIndexChange.SetLatestToFalse(listed.ParsedVersion), HijackIndexChange.SetLatestToTrue(InitialParsedVersion), }, output.Hijack.ToArray()); Assert.Equal(InitialFullVersion, _list.GetLatestVersionInfo().FullVersion); Assert.Equal(InitialParsedVersion, _list._latestOrNull); Assert.Equal(new[] { PreviousFullVersion, InitialFullVersion }, _list.GetLatestVersionInfo().ListedFullVersions); Assert.Equal(new[] { listed.ParsedVersion, InitialParsedVersion }, _list._versions.Keys.ToArray()); }
public void DeletesNonLatestListedVersionWithOneOtherVersion() { var nonLatest = new FilteredVersionProperties(PreviousFullVersion, listed: true); _list.Upsert(nonLatest); var output = _list.Delete(nonLatest.ParsedVersion); Assert.Equal(SearchIndexChangeType.UpdateVersionList, output.Search); Assert.Equal( new[] { HijackIndexChange.Delete(nonLatest.ParsedVersion), HijackIndexChange.SetLatestToTrue(InitialParsedVersion), }, output.Hijack.ToArray()); Assert.Equal(InitialFullVersion, _list.GetLatestVersionInfo().FullVersion); Assert.Equal(InitialParsedVersion, _list._latestOrNull); Assert.Equal(new[] { InitialFullVersion }, _list.GetLatestVersionInfo().ListedFullVersions); Assert.Equal(new[] { InitialParsedVersion }, _list._versions.Keys.ToArray()); }
public void DeletesLatestVersion() { var latest = new FilteredVersionProperties(NextFullVersion, listed: true); _list.Upsert(latest); var output = _list.Delete(latest.ParsedVersion); Assert.Equal(SearchIndexChangeType.DowngradeLatest, output.Search); Assert.Equal( new[] { HijackIndexChange.Delete(latest.ParsedVersion), HijackIndexChange.SetLatestToTrue(InitialParsedVersion), }, output.Hijack.ToArray()); Assert.Equal(InitialFullVersion, _list.GetLatestVersionInfo().FullVersion); Assert.Equal(InitialParsedVersion, _list._latestOrNull); Assert.Equal(new[] { InitialFullVersion }, _list.GetLatestVersionInfo().ListedFullVersions); Assert.Equal(new[] { InitialParsedVersion }, _list._versions.Keys.ToArray()); }
public void DeletesUnlistedVersion(string version) { var unlisted = new FilteredVersionProperties(version, listed: false); _list.Upsert(unlisted); var output = _list.Delete(unlisted.ParsedVersion); Assert.Equal(SearchIndexChangeType.UpdateVersionList, output.Search); Assert.Equal( new[] { HijackIndexChange.Delete(unlisted.ParsedVersion), HijackIndexChange.SetLatestToTrue(InitialParsedVersion), }, output.Hijack.ToArray()); Assert.Equal(InitialFullVersion, _list.GetLatestVersionInfo().FullVersion); Assert.Equal(InitialParsedVersion, _list._latestOrNull); Assert.Equal(new[] { InitialFullVersion }, _list.GetLatestVersionInfo().ListedFullVersions); Assert.Equal(new[] { InitialParsedVersion }, _list._versions.Keys.ToArray()); }
public void RemovesNonLatestListedVersionWithTwoOtherVersions() { _list.Upsert(new FilteredVersionProperties(PreviousFullVersion, listed: true)); _list.Upsert(new FilteredVersionProperties(NextFullVersion, listed: true)); var output = _list.Remove(InitialParsedVersion); Assert.Equal(SearchIndexChangeType.UpdateVersionList, output.Search); Assert.Equal( new[] { HijackIndexChange.UpdateMetadata(InitialParsedVersion), HijackIndexChange.SetLatestToFalse(InitialParsedVersion), HijackIndexChange.SetLatestToTrue(NextParsedVersion), }, output.Hijack.ToArray()); Assert.Equal(NextFullVersion, _list.GetLatestVersionInfo().FullVersion); Assert.Equal(NextParsedVersion, _list._latestOrNull); Assert.Equal(new[] { PreviousFullVersion, NextFullVersion }, _list.GetLatestVersionInfo().ListedFullVersions); Assert.Equal(new[] { PreviousParsedVersion, NextParsedVersion }, _list._versions.Keys.ToArray()); }
public void AddingFirstListedVersion(string version) { StartWithUnlisted(); var listed = new FilteredVersionProperties(version, listed: true); var output = _list.Upsert(listed); Assert.Equal(SearchIndexChangeType.AddFirst, output.Search); Assert.Equal( new[] { HijackIndexChange.UpdateMetadata(listed.ParsedVersion), HijackIndexChange.SetLatestToTrue(listed.ParsedVersion), }, output.Hijack.ToArray()); Assert.Equal(listed.FullVersion, _list.GetLatestVersionInfo().FullVersion); Assert.Equal(listed.ParsedVersion, _list._latestOrNull); Assert.Equal(new[] { listed.FullVersion }, _list.GetLatestVersionInfo().ListedFullVersions); Assert.Equal( new[] { InitialParsedVersion, listed.ParsedVersion }.OrderBy(x => x).ToArray(), _list._versions.Keys.ToArray()); }