Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nuget.exe list delisted option is not propagated correctly in certain cases for V2Feeds, closes #4334 #1136

Merged
merged 3 commits into from
Jan 19, 2017
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,10 @@ public async override Task<IEnumerableAsync<IPackageSearchMetadata>> ListAsync(
{
filter = new SearchFilter(includePrerelease: false,
filter: SearchFilterType.IsLatestVersion)
{ OrderBy = SearchOrderBy.Id };
{
OrderBy = SearchOrderBy.Id,
IncludeDelisted = includeDelisted
};
}
}
}
Expand Down Expand Up @@ -95,7 +98,10 @@ public async override Task<IEnumerableAsync<IPackageSearchMetadata>> ListAsync(
{
filter = new SearchFilter(includePrerelease: false,
filter: SearchFilterType.IsLatestVersion)
{ OrderBy = SearchOrderBy.Id };
{
OrderBy = SearchOrderBy.Id,
IncludeDelisted = includeDelisted
};
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,97 @@ namespace NuGet.Protocol.Tests
{
public class V2FeedListResourceTests
{

[Fact]
public async Task TestListDelistedNoPrereleaseNotAllVersionsDelistedOnlyResponse()
{
// Arrange
var serviceAddress = TestUtility.CreateServiceAddress() + "api/v2";

var responses = new Dictionary<string, string>();

responses.Add(serviceAddress + "/Search()?$filter=IsLatestVersion&$orderby=Id&searchTerm='newton'&targetFramework=''&includePrerelease=false&$skip=0&$top=30",
TestUtility.GetResource("NuGet.Protocol.Core.v3.Tests.compiler.resources.6DelistedEntries.xml", GetType()));
responses.Add(serviceAddress, string.Empty);
responses.Add(serviceAddress + "/$metadata",
TestUtility.GetResource("NuGet.Protocol.Core.v3.Tests.compiler.resources.MetadataTT.xml", GetType()));

var httpSource = new TestHttpSource(new PackageSource(serviceAddress), responses);

var parser = new V2FeedParser(httpSource, serviceAddress);
var legacyResource = new LegacyFeedCapabilityResourceV2Feed(parser, serviceAddress);
var resource = new V2FeedListResource(parser, legacyResource, serviceAddress);


var enumerable = await resource.ListAsync(searchTerm: "newton",
prerelease: false, allVersions: false, includeDelisted: true, logger: NullLogger.Instance, token: CancellationToken.None);

int ExpectedCount = 6;
int ActualCount = 0;
var enumerator = enumerable.GetEnumeratorAsync();


while (await enumerator.MoveNextAsync())
{
if (enumerator.Current != null)
{
ActualCount++;
Assert.True(ExpectedCount >= ActualCount, "Too many results");
}
else
{
Assert.False(false, "Null Value, this shouldn't happen.");
}
}

Assert.True(ExpectedCount == ActualCount, "Expected was " + ExpectedCount + " but actual was " + ActualCount);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use Assert.Equal to get exactly this 😄

}

[Fact]
public async Task TestListNoDelistedNoPrereleaseNotAllVersionsDelistedOnlyResponse()
{
// Arrange
var serviceAddress = TestUtility.CreateServiceAddress() + "api/v2";

var responses = new Dictionary<string, string>();

responses.Add(serviceAddress + "/Search()?$filter=IsLatestVersion&$orderby=Id&searchTerm='newton'&targetFramework=''&includePrerelease=false&$skip=0&$top=30",
TestUtility.GetResource("NuGet.Protocol.Core.v3.Tests.compiler.resources.6DelistedEntries.xml", GetType()));
responses.Add(serviceAddress, string.Empty);
responses.Add(serviceAddress + "/$metadata",
TestUtility.GetResource("NuGet.Protocol.Core.v3.Tests.compiler.resources.MetadataTT.xml", GetType()));

var httpSource = new TestHttpSource(new PackageSource(serviceAddress), responses);

var parser = new V2FeedParser(httpSource, serviceAddress);
var legacyResource = new LegacyFeedCapabilityResourceV2Feed(parser, serviceAddress);
var resource = new V2FeedListResource(parser, legacyResource, serviceAddress);


var enumerable = await resource.ListAsync(searchTerm: "newton",
prerelease: false, allVersions: false, includeDelisted: false, logger: NullLogger.Instance, token: CancellationToken.None);

int ExpectedCount = 0;
int ActualCount = 0;
var enumerator = enumerable.GetEnumeratorAsync();


while (await enumerator.MoveNextAsync())
{
if (enumerator.Current != null)
{
ActualCount++;
Assert.True(ExpectedCount >= ActualCount, "Too many results");
}
else
{
Assert.False(false, "Null Value, this shouldn't happen.");
}
}

Assert.True(ExpectedCount == ActualCount, "Expected was " + ExpectedCount + " but actual was " + ActualCount);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It could be easier to debug in the future if you verified the names that should be there also, typically this helps in tests. But this should cover everything.

}

[Fact]
public async Task TestListNoDelistedNoPrereleaseNotAllVersions()
{
Expand Down
Loading