Skip to content

Commit f3d868e

Browse files
committed
Add integration tests for version autocomplete
1 parent b3319d1 commit f3d868e

File tree

3 files changed

+66
-6
lines changed

3 files changed

+66
-6
lines changed

src/BaGet.Hosting/Controllers/SearchController.cs

+4-6
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,15 @@ public async Task<ActionResult<AutocompleteResponse>> AutocompleteAsync(
5454
[FromQuery]string packageType = null,
5555
CancellationToken cancellationToken = default)
5656
{
57-
// Default to autocomplete, just like nuget.org does
57+
// If only "id" is provided, find package versions. Otherwise, find package IDs.
5858
if (versionsQuery != null && autocompleteQuery == null)
5959
{
6060
var request = new VersionsRequest
6161
{
6262
IncludePrerelease = prerelease,
6363
IncludeSemVer2 = semVerLevel == "2.0.0",
64+
PackageId = versionsQuery,
6465
};
65-
request.PackageId = versionsQuery;
6666

6767
return await _searchService.ListPackageVersionsAsync(request, cancellationToken);
6868
}
@@ -74,11 +74,9 @@ public async Task<ActionResult<AutocompleteResponse>> AutocompleteAsync(
7474
IncludeSemVer2 = semVerLevel == "2.0.0",
7575
PackageType = packageType,
7676
Skip = skip,
77-
Take = take
77+
Take = take,
78+
Query = autocompleteQuery,
7879
};
79-
request.Query = versionsQuery;
80-
81-
request.Query = autocompleteQuery;
8280

8381
return await _searchService.AutocompleteAsync(request, cancellationToken);
8482
}

tests/BaGet.Tests/ApiIntegrationTests.cs

+38
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,44 @@ public async Task AutocompleteReturnsEmpty()
130130
}", json);
131131
}
132132

133+
[Fact]
134+
public async Task AutocompleteVersionsReturnsOk()
135+
{
136+
await _factory.AddPackageAsync(PackageData.Default);
137+
138+
using var response = await _client.GetAsync("v3/autocomplete?id=DefaultPackage");
139+
var content = await response.Content.ReadAsStreamAsync();
140+
var json = PrettifyJson(content);
141+
142+
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
143+
Assert.Equal(@"{
144+
""@context"": {
145+
""@vocab"": ""http://schema.nuget.org/schema#""
146+
},
147+
""totalHits"": 1,
148+
""data"": [
149+
""1.2.3""
150+
]
151+
}", json);
152+
}
153+
154+
[Fact]
155+
public async Task AutocompleteVersionsReturnsEmpty()
156+
{
157+
using var response = await _client.GetAsync("v3/autocomplete?id=PackageDoesNotExist");
158+
var content = await response.Content.ReadAsStreamAsync();
159+
var json = PrettifyJson(content);
160+
161+
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
162+
Assert.Equal(@"{
163+
""@context"": {
164+
""@vocab"": ""http://schema.nuget.org/schema#""
165+
},
166+
""totalHits"": 0,
167+
""data"": []
168+
}", json);
169+
}
170+
133171
[Fact]
134172
public async Task VersionListReturnsOk()
135173
{

tests/BaGet.Tests/BaGetClientIntegrationTests.cs

+24
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,30 @@ public async Task AutocompleteReturnsEmpty()
9999
Assert.Empty(results);
100100
}
101101

102+
[Fact]
103+
public async Task AutocompleteVersions()
104+
{
105+
await _factory.AddPackageAsync(PackageData.Default);
106+
107+
var client = _clientFactory.CreateAutocompleteClient();
108+
var results = await client.ListPackageVersionsAsync("DefaultPackage");
109+
110+
var result = Assert.Single(results.Data);
111+
112+
Assert.Equal(1, results.TotalHits);
113+
Assert.Equal("1.2.3", result);
114+
}
115+
116+
[Fact]
117+
public async Task AutocompleteVersionsReturnsEmpty()
118+
{
119+
var client = _clientFactory.CreateAutocompleteClient();
120+
var results = await client.ListPackageVersionsAsync("PackageDoesNotExist");
121+
122+
Assert.Empty(results.Data);
123+
Assert.Equal(0, results.TotalHits);
124+
}
125+
102126
[Fact]
103127
public async Task VersionListReturnsResults()
104128
{

0 commit comments

Comments
 (0)