Skip to content

Commit 84f26ba

Browse files
committed
Fixed GetUpdates tests. Removed Search tests.
1 parent cbef9f0 commit 84f26ba

2 files changed

Lines changed: 30 additions & 85 deletions

File tree

src/NuGet.Server.V2/Controllers/NuGetODataController.cs

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -165,13 +165,14 @@ public virtual IHttpActionResult GetUpdates(
165165

166166
var idValues = packageIds.Trim().Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
167167
var versionValues = versions.Trim().Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
168-
var targetFrameworkValues = String.IsNullOrEmpty(targetFrameworks) ? null :
169-
targetFrameworks.Split('|').Select(VersionUtility.ParseFrameworkName).ToList();
170-
var versionConstraintValues = String.IsNullOrEmpty(versionConstraints)
168+
var targetFrameworkValues = String.IsNullOrEmpty(targetFrameworks)
169+
? null
170+
: targetFrameworks.Split('|').Select(VersionUtility.ParseFrameworkName).ToList();
171+
var versionConstraintValues = (String.IsNullOrEmpty(versionConstraints)
171172
? new string[idValues.Length]
172-
: versionConstraints.Split('|');
173+
: versionConstraints.Split('|')).ToList();
173174

174-
if (idValues.Length == 0 || idValues.Length != versionValues.Length || idValues.Length != versionConstraintValues.Length)
175+
if (idValues.Length == 0 || idValues.Length != versionValues.Length || idValues.Length != versionConstraintValues.Count)
175176
{
176177
// Exit early if the request looks invalid
177178
return Ok(Enumerable.Empty<ODataPackage>().AsQueryable());
@@ -180,10 +181,19 @@ public virtual IHttpActionResult GetUpdates(
180181
var packagesToUpdate = new List<IPackageMetadata>();
181182
for (var i = 0; i < idValues.Length; i++)
182183
{
183-
packagesToUpdate.Add(new PackageBuilder { Id = idValues[i], Version = new SemanticVersion(versionValues[i]) });
184+
SemanticVersion semVersion;
185+
if(SemanticVersion.TryParse(versionValues[i],out semVersion))
186+
{
187+
packagesToUpdate.Add(new PackageBuilder { Id = idValues[i], Version = semVersion });
188+
}
189+
else
190+
{
191+
versionConstraintValues.RemoveAt(i);
192+
}
193+
184194
}
185195

186-
var versionConstraintsList = new IVersionSpec[versionConstraintValues.Length];
196+
var versionConstraintsList = new IVersionSpec[versionConstraintValues.Count];
187197
for (var i = 0; i < versionConstraintsList.Length; i++)
188198
{
189199
if (!String.IsNullOrEmpty(versionConstraintValues[i]))
@@ -372,10 +382,11 @@ protected IPackage RetrieveFromRepository(string id, string version)
372382

373383
protected IQueryable<ODataPackage> TransformPackages(IEnumerable<IPackage> packages)
374384
{
375-
var retValue = packages.Select(x => x.AsODataPackage())
385+
return packages
386+
.Distinct()
387+
.Select(x => x.AsODataPackage())
376388
.AsQueryable()
377389
.InterceptWith(new NormalizeVersionInterceptor());
378-
return retValue;
379390
}
380391

381392
/// <summary>

test/NuGet.Server.V2.Tests/NuGetODataControllerTests.cs

Lines changed: 10 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -238,73 +238,6 @@ public void FindPackagesByIdDoesNotHitBackendWhenIdIsEmpty()
238238
}
239239
}
240240

241-
public class SearchMethod
242-
{
243-
[Theory]
244-
[InlineData("Foo", false, 1, new[] { "Foo" }, new[] { "1.0.0" })]
245-
[InlineData("Bar", false, 2, new[] { "Bar", "Bar" }, new[] { "1.0.0", "2.0.0" })]
246-
[InlineData("", false, 3, new[] { "Foo", "Bar", "Bar" }, new[] { "1.0.0", "1.0.0", "2.0.0" })]
247-
[InlineData("CommonTag", false, 3, new[] { "Foo", "Bar", "Bar" }, new[] { "1.0.0", "1.0.0", "2.0.0" })]
248-
[InlineData("", true, 5, new[] { "Foo", "Foo", "Bar", "Bar", "Bar" }, new[] { "1.0.0", "1.0.1-a", "1.0.0", "2.0.0", "2.0.1-a" })]
249-
public void SearchFiltersPackagesBySearchTermAndPrereleaseFlag(string searchTerm, bool includePrerelease, int expectedNumberOfPackages, string[] expectedIds, string[] expectedVersions)
250-
{
251-
// Arrange
252-
var repo = ControllerTestHelpers.SetupTestPackageRepository();
253-
var v2Service = new TestableNuGetODataController(repo.Object);
254-
v2Service.Request = new HttpRequestMessage(HttpMethod.Get, "https://localhost:8081/api/v2/Search()?searchTerm='" + searchTerm + "'&targetFramework=''&includePrerelease=false");
255-
256-
// Act
257-
var result = (v2Service.Search(
258-
new ODataQueryOptions<ODataPackage>(new ODataQueryContext(NuGetV2WebApiEnabler.BuildNuGetODataModel(), typeof(ODataPackage)), v2Service.Request),
259-
searchTerm: searchTerm,
260-
targetFramework: null,
261-
includePrerelease: includePrerelease))
262-
.ExpectQueryResult<ODataPackage>()
263-
.GetInnerResult()
264-
.ExpectOkNegotiatedContentResult<IQueryable<ODataPackage>>()
265-
.ToArray();
266-
267-
// Assert
268-
Assert.Equal(expectedNumberOfPackages, result.Length);
269-
for (var i = 0; i < expectedIds.Length; i++)
270-
{
271-
var expectedId = expectedIds[i];
272-
var expectedVersion = expectedVersions[i];
273-
274-
Assert.True(result.Any(p => p.Id == expectedId && p.Version == expectedVersion), string.Format("Search results did not contain {0} {1}", expectedId, expectedVersion));
275-
}
276-
}
277-
278-
[Theory]
279-
[InlineData("Foo", false, 1)]
280-
[InlineData("Bar", false, 2)]
281-
[InlineData("", false, 3)]
282-
[InlineData("CommonTag", false, 3)]
283-
[InlineData("", true, 5)]
284-
public void SearchCountFiltersPackagesBySearchTermAndPrereleaseFlag(string searchTerm, bool includePrerelease, int expectedNumberOfPackages)
285-
{
286-
// Arrange
287-
var repo = ControllerTestHelpers.SetupTestPackageRepository();
288-
var v2Service = new TestableNuGetODataController(repo.Object);
289-
v2Service.Request = new HttpRequestMessage(HttpMethod.Get, "https://localhost:8081/api/v2/Search()?searchTerm='" + searchTerm + "'&targetFramework=''&includePrerelease=false");
290-
291-
v2Service.Request = new HttpRequestMessage(HttpMethod.Get, "https://localhost:8081/api/v2/Search()/$count?searchTerm='" + searchTerm + "'&targetFramework=''&includePrerelease=false");
292-
293-
// Act
294-
var result = (v2Service.SearchCount(
295-
new ODataQueryOptions<ODataPackage>(new ODataQueryContext(NuGetV2WebApiEnabler.BuildNuGetODataModel(), typeof(ODataPackage)), v2Service.Request),
296-
searchTerm: searchTerm,
297-
targetFramework: null,
298-
includePrerelease: includePrerelease))
299-
.ExpectQueryResult<ODataPackage>()
300-
.GetInnerResult()
301-
.ExpectResult<PlainTextResult>();
302-
303-
// Assert
304-
Assert.Equal(expectedNumberOfPackages.ToString(), result.Content);
305-
}
306-
}
307-
308241
public class GetUpdatesMethod
309242
{
310243
[Theory]
@@ -386,7 +319,7 @@ public void GetUpdatesReturnsVersionsNewerThanListedVersion()
386319
CreatePackageWithDefaults("Foo", "1.1.0", listed: true),
387320
CreatePackageWithDefaults("Foo", "1.2.0-alpha", listed: true),
388321
CreatePackageWithDefaults("Foo", "1.2.0", listed: true),
389-
CreatePackageWithDefaults("Qux", "1.1.0", listed: true) ,
322+
CreatePackageWithDefaults("Qux", "2.0", listed: true) ,
390323
}.AsQueryable());
391324
var v2Service = new TestableNuGetODataController(repo.Object);
392325
v2Service.Request = new HttpRequestMessage(HttpMethod.Get, "https://localhost:8081/");
@@ -772,13 +705,14 @@ public void GetUpdatesFiltersByTargetFramework()
772705
new[]
773706
{
774707
CreatePackageWithDefaults("Foo", "1.0.0", listed: true),
775-
CreatePackageWithDefaults("Foo", "1.1.0", listed: true, supportedFrameWorks: "SL5,Net40-Full"),
776-
CreatePackageWithDefaults("Foo", "1.3.0-alpha", listed: true, supportedFrameWorks: "SL5,Net40-Full"),
777-
CreatePackageWithDefaults("Foo", "2.0.0", listed: true, supportedFrameWorks: "SL5,WinRT"),
708+
CreatePackageWithDefaults("Foo", "1.1.0", listed: true, supportedFrameWorks: "SL5|Net40-Full"),
709+
CreatePackageWithDefaults("Foo", "1.3.0-alpha", listed: true, supportedFrameWorks: "SL5|Net40-Full"),
710+
CreatePackageWithDefaults("Foo", "2.0.0", listed: true, supportedFrameWorks: "SL5|WinRT"),
778711
CreatePackageWithDefaults("Qux", "2.0", listed: true),
779712
}.AsQueryable());
780713

781-
var v2Service = new TestableNuGetODataController(repo.Object); v2Service.Request = new HttpRequestMessage(HttpMethod.Get, "https://localhost:8081/");
714+
var v2Service = new TestableNuGetODataController(repo.Object);
715+
v2Service.Request = new HttpRequestMessage(HttpMethod.Get, "https://localhost:8081/");
782716

783717
// Act
784718
var result = v2Service.GetUpdates(
@@ -809,10 +743,10 @@ public void GetUpdatesFiltersIncludesHighestPrereleasePackage()
809743
new[]
810744
{
811745
CreatePackageWithDefaults("Foo", "1.0.0", listed: true),
812-
CreatePackageWithDefaults("Foo", "1.1.0", listed: true, supportedFrameWorks: "SL5,Net40-Full"),
813-
CreatePackageWithDefaults("Foo", "1.2.0", listed: true, supportedFrameWorks: "SL5,Net40-Full"),
814-
CreatePackageWithDefaults("Foo", "1.3.0-alpha", listed: true, supportedFrameWorks: "SL5,Net40-Full"),
815-
CreatePackageWithDefaults("Foo", "2.0.0", listed: true, supportedFrameWorks: "SL5,WinRT"),
746+
CreatePackageWithDefaults("Foo", "1.1.0", listed: true, supportedFrameWorks: "SL5|Net40-Full"),
747+
CreatePackageWithDefaults("Foo", "1.2.0", listed: true, supportedFrameWorks: "SL5|Net40-Full"),
748+
CreatePackageWithDefaults("Foo", "1.3.0-alpha", listed: true, supportedFrameWorks: "SL5|Net40-Full"),
749+
CreatePackageWithDefaults("Foo", "2.0.0", listed: true, supportedFrameWorks: "SL5|WinRT"),
816750
CreatePackageWithDefaults("Qux", "2.0", listed: true),
817751
}.AsQueryable());
818752

0 commit comments

Comments
 (0)