Skip to content

Commit 9cb3e62

Browse files
committed
Readded tests for Search method. But tests still fail for some values.
1 parent 603bc0c commit 9cb3e62

3 files changed

Lines changed: 125 additions & 1 deletion

File tree

test/NuGet.Server.Core.Tests/ServerPackageRepositoryTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace NuGet.Server.Core.Tests
1515
{
1616
public class ServerPackageRepositoryTest
1717
{
18-
public ServerPackageRepository CreateServerPackageRepository(string path, Action<ExpandedPackageRepository> setupRepository = null, Func<string, bool, bool> getSetting = null)
18+
public static ServerPackageRepository CreateServerPackageRepository(string path, Action<ExpandedPackageRepository> setupRepository = null, Func<string, bool, bool> getSetting = null)
1919
{
2020
var fileSystem = new PhysicalFileSystem(path);
2121
var expandedPackageRepository = new ExpandedPackageRepository(fileSystem);

test/NuGet.Server.V2.Tests/NuGet.Server.V2.Tests.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,10 @@
130130
<Project>{273e4575-4054-4578-9d14-8d4e640a365f}</Project>
131131
<Name>NuGet.Server.V2</Name>
132132
</ProjectReference>
133+
<ProjectReference Include="..\NuGet.Server.Core.Tests\NuGet.Server.Core.Tests.csproj">
134+
<Project>{fde8ddfb-e01b-47fd-9945-0a151f3ae589}</Project>
135+
<Name>NuGet.Server.Core.Tests</Name>
136+
</ProjectReference>
133137
</ItemGroup>
134138
<ItemGroup>
135139
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />

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

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
using NuGet.Server.V2.Tests.Infrastructure;
1515
using NuGet.Server.V2.Tests.TestUtils;
1616
using Xunit;
17+
using System.IO;
18+
using NuGet.Server.Core.Tests.Infrastructure;
19+
using NuGet.Server.Core.Tests;
1720

1821
namespace NuGet.Server.V2.Tests
1922
{
@@ -773,6 +776,123 @@ public void GetUpdatesFiltersIncludesHighestPrereleasePackage()
773776
AssertPackage(new { Id = "Qux", Version = "2.0" }, result[1]);
774777
}
775778
}
779+
780+
public class SearchMethod
781+
{
782+
[Theory]
783+
[InlineData("Foo", false, 1, new[] { "Foo" }, new[] { "1.0.0" })]
784+
[InlineData("Bar", false, 2, new[] { "Bar", "Bar" }, new[] { "1.0.0", "2.0.0" })]
785+
[InlineData("", false, 3, new[] { "Foo", "Bar", "Bar" }, new[] { "1.0.0", "1.0.0", "2.0.0" })]
786+
[InlineData("CommonTag", false, 3, new[] { "Foo", "Bar", "Bar" }, new[] { "1.0.0", "1.0.0", "2.0.0" })]
787+
[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" })]
788+
public void SearchFiltersPackagesBySearchTermAndPrereleaseFlag(string searchTerm, bool includePrerelease, int expectedNumberOfPackages, string[] expectedIds, string[] expectedVersions)
789+
{
790+
using (var temporaryDirectory = new TemporaryDirectory())
791+
{
792+
// Arrange
793+
ServerPackageRepository serverRepository = CreateRepositoryWithPackages(temporaryDirectory);
794+
795+
var v2Service = new TestableNuGetODataController(serverRepository);
796+
v2Service.Request = new HttpRequestMessage(HttpMethod.Get, "https://localhost:8081/api/v2/Search()?searchTerm='" + searchTerm + "'&targetFramework=''&includePrerelease=" + includePrerelease);
797+
798+
// Act
799+
var result = v2Service.Search(
800+
new ODataQueryOptions<ODataPackage>(new ODataQueryContext(NuGetV2WebApiEnabler.BuildNuGetODataModel(), typeof(ODataPackage)), v2Service.Request),
801+
searchTerm: searchTerm,
802+
targetFramework: null,
803+
includePrerelease: includePrerelease)
804+
.ExpectQueryResult<ODataPackage>()
805+
.GetInnerResult()
806+
.ExpectOkNegotiatedContentResult<IQueryable<ODataPackage>>()
807+
.ToArray();
808+
809+
810+
// Assert
811+
Assert.Equal(expectedNumberOfPackages, result.Length);
812+
for (var i = 0; i < expectedIds.Length; i++)
813+
{
814+
var expectedId = expectedIds[i];
815+
var expectedVersion = expectedVersions[i];
816+
817+
Assert.True(result.Any(p => p.Id == expectedId && p.Version == expectedVersion), string.Format("Search results did not contain {0} {1}", expectedId, expectedVersion));
818+
}
819+
}
820+
}
821+
822+
[Theory]
823+
[InlineData("Foo", false, 1)]
824+
[InlineData("Bar", false, 2)]
825+
[InlineData("", false, 3)]
826+
[InlineData("CommonTag", false, 3)]
827+
[InlineData("", true, 5)]
828+
public void SearchCountFiltersPackagesBySearchTermAndPrereleaseFlag(string searchTerm, bool includePrerelease, int expectedNumberOfPackages)
829+
{
830+
using (var temporaryDirectory = new TemporaryDirectory())
831+
{
832+
// Arrange
833+
ServerPackageRepository serverRepository = CreateRepositoryWithPackages(temporaryDirectory);
834+
835+
var v2Service = new TestableNuGetODataController(serverRepository);
836+
v2Service.Request = new HttpRequestMessage(HttpMethod.Get, "https://localhost:8081/api/v2/Search()/$count?searchTerm='" + searchTerm + "'&targetFramework=''&includePrerelease=false");
837+
838+
// Act
839+
var result = v2Service.SearchCount(
840+
new ODataQueryOptions<ODataPackage>(new ODataQueryContext(NuGetV2WebApiEnabler.BuildNuGetODataModel(), typeof(ODataPackage)), v2Service.Request),
841+
searchTerm: searchTerm,
842+
targetFramework: null,
843+
includePrerelease: includePrerelease)
844+
.ExpectQueryResult<ODataPackage>()
845+
.GetInnerResult()
846+
.ExpectResult<PlainTextResult>();
847+
848+
// Assert
849+
Assert.Equal(expectedNumberOfPackages.ToString(), result.Content);
850+
}
851+
}
852+
853+
private ServerPackageRepository CreateRepositoryWithPackages(TemporaryDirectory temporaryDirectory)
854+
{
855+
return ServerPackageRepositoryTest.CreateServerPackageRepository(temporaryDirectory.Path, repository =>
856+
{
857+
repository.AddPackage(CreatePackage("Foo", "1.0.0", new[] { "Foo", "CommonTag" }));
858+
// repository.AddPackage(CreatePackage("Foo", "1.0.1", new[] { "Foo", "CommonTag" }));
859+
// repository.AddPackage(CreatePackage("Foo", "2.0.0", new[] { "Foo", "CommonTag" }));
860+
repository.AddPackage(CreatePackage("Foo", "1.0.1-a", new[] { "Foo", "CommonTag" }));
861+
repository.AddPackage(CreatePackage("Bar", "1.0.0", new[] { "Bar", "CommonTag" }));
862+
repository.AddPackage(CreatePackage("Bar", "2.0.0", new[] { "Bar", "CommonTag" }));
863+
repository.AddPackage(CreatePackage("Bar", "2.0.1-a", new[] { "Bar", "CommonTag" }));
864+
repository.AddPackage(CreatePackage("Bar", "2.0.1-b", new[] { "Bar", "CommonTag" }));
865+
repository.AddPackage(CreatePackage("Baz", "1.0.0", new[] { "Baz", "CommonTag" }));
866+
});
867+
}
868+
869+
private IPackage CreatePackage(string id, string version, IEnumerable<string> tags)
870+
{
871+
var package = new PackageBuilder
872+
{
873+
Id = id,
874+
Version = new SemanticVersion(version),
875+
Authors = { "Test" },
876+
Owners = { "Test" },
877+
Description = id,
878+
Summary = id,
879+
};
880+
881+
package.Tags.AddRange(tags);
882+
883+
var mockFile = new Mock<IPackageFile>();
884+
mockFile.Setup(m => m.Path).Returns("foo");
885+
mockFile.Setup(m => m.GetStream()).Returns(new MemoryStream());
886+
package.Files.Add(mockFile.Object);
887+
888+
var packageStream = new MemoryStream();
889+
package.Save(packageStream);
890+
packageStream.Seek(0, SeekOrigin.Begin);
891+
892+
return new ZipPackage(packageStream);
893+
}
894+
}
895+
776896
}
777897

778898

0 commit comments

Comments
 (0)