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); }
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 RemovesVeryLastVersionWhenLastVersionIsUnlisted() { var output = _list.Remove(InitialParsedVersion); Assert.Equal(SearchIndexChangeType.Delete, output.Search); Assert.Equal( new[] { HijackIndexChange.UpdateMetadata(InitialParsedVersion), HijackIndexChange.SetLatestToFalse(InitialParsedVersion), }, output.Hijack.ToArray()); Assert.Null(_list.GetLatestVersionInfo()); Assert.Null(_list._latestOrNull); Assert.Empty(_list._versions); }
public void UnlistingLatestAndNoOtherVersions() { var output = _list.Upsert(_unlistedVersionProperties); Assert.Equal(SearchIndexChangeType.Delete, output.Search); Assert.Equal( new[] { HijackIndexChange.UpdateMetadata(InitialParsedVersion), HijackIndexChange.SetLatestToFalse(InitialParsedVersion), }, output.Hijack.ToArray()); Assert.Null(_list.GetLatestVersionInfo()); Assert.Null(_list._latestOrNull); Assert.Equal(new[] { InitialParsedVersion }, _list._versions.Keys.ToArray()); }
public void RemovesLastListedVersion(string version) { var unlisted = new FilteredVersionProperties(version, listed: false); _list.Upsert(unlisted); var output = _list.Remove(InitialParsedVersion); Assert.Equal(SearchIndexChangeType.Delete, output.Search); Assert.Equal( new[] { HijackIndexChange.UpdateMetadata(InitialParsedVersion), HijackIndexChange.SetLatestToFalse(InitialParsedVersion), }, output.Hijack.ToArray()); Assert.Null(_list.GetLatestVersionInfo()); Assert.Null(_list._latestOrNull); Assert.Equal(new[] { unlisted.ParsedVersion }, _list._versions.Keys.ToArray()); }
public void RemovesNewVersion(string version) { var parsedVersion = NuGetVersion.Parse(version); var output = _list.Remove(parsedVersion); Assert.Equal(SearchIndexChangeType.UpdateVersionList, output.Search); Assert.Equal( new[] { HijackIndexChange.UpdateMetadata(parsedVersion), HijackIndexChange.SetLatestToFalse(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 RemovesByNormalizedVersion() { ClearList(); _list.Upsert(new FilteredVersionProperties("1.02.0-Alpha.1+git", listed: true)); var removedVersion = NuGetVersion.Parse("1.02.0-Alpha.1+git"); var output = _list.Remove(removedVersion); Assert.Equal(SearchIndexChangeType.Delete, output.Search); Assert.Equal( new[] { HijackIndexChange.UpdateMetadata(removedVersion), HijackIndexChange.SetLatestToFalse(removedVersion), }, output.Hijack.ToArray()); Assert.Null(_list.GetLatestVersionInfo()); Assert.Null(_list._latestOrNull); Assert.Empty(_list._versions.Keys); }
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 RemovesLatestListedVersionWithTwoOtherVersions() { _list.Upsert(new FilteredVersionProperties(PreviousFullVersion, listed: true)); _list.Upsert(new FilteredVersionProperties(NextFullVersion, listed: true)); var output = _list.Remove(NextParsedVersion); Assert.Equal(SearchIndexChangeType.DowngradeLatest, output.Search); Assert.Equal( new[] { HijackIndexChange.UpdateMetadata(NextParsedVersion), HijackIndexChange.SetLatestToFalse(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 AddingUnlistedVersion(string version) { var unlisted = new FilteredVersionProperties(version, listed: false); var output = _list.Upsert(unlisted); Assert.Equal(SearchIndexChangeType.UpdateVersionList, output.Search); Assert.Equal( new[] { HijackIndexChange.UpdateMetadata(unlisted.ParsedVersion), HijackIndexChange.SetLatestToFalse(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[] { unlisted.ParsedVersion, InitialParsedVersion }.OrderBy(x => x).ToArray(), _list._versions.Keys.ToArray()); }
public void RemovesNonLatestListedVersionWithOneOtherVersion() { var nonLatest = new FilteredVersionProperties(PreviousFullVersion, listed: true); _list.Upsert(nonLatest); var output = _list.Remove(nonLatest.ParsedVersion); Assert.Equal(SearchIndexChangeType.UpdateVersionList, output.Search); Assert.Equal( new[] { HijackIndexChange.UpdateMetadata(nonLatest.ParsedVersion), HijackIndexChange.SetLatestToFalse(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 UnlistingLatestWithOtherUnlistedVersions(string version) { var unlisted = new FilteredVersionProperties(version, listed: false); _list.Upsert(unlisted); var output = _list.Upsert(_unlistedVersionProperties); Assert.Equal(SearchIndexChangeType.Delete, output.Search); Assert.Equal( new[] { HijackIndexChange.UpdateMetadata(InitialParsedVersion), HijackIndexChange.SetLatestToFalse(InitialParsedVersion), }, output.Hijack.ToArray()); Assert.Null(_list.GetLatestVersionInfo()); Assert.Null(_list._latestOrNull); Assert.Equal( new[] { InitialParsedVersion, unlisted.ParsedVersion }.OrderBy(x => x).ToArray(), _list._versions.Keys.ToArray()); }