Skip to content

Commit 46b5077

Browse files
add islocked filter to SeachIssuesRequest (#2623)
* add islocker filter to SeachIssuesRequest * update docs * Update docs/search.md with review suggestions Co-authored-by: Keegan Campbell <[email protected]> Co-authored-by: notauserx <[email protected]> Co-authored-by: Keegan Campbell <[email protected]>
1 parent 6c11c1e commit 46b5077

File tree

4 files changed

+46
-1
lines changed

4 files changed

+46
-1
lines changed

Octokit.Tests.Integration/Clients/SearchClientTests.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,28 @@ public async Task SearchForAllIssuesUsingTerm()
281281
Assert.NotEmpty(openedIssues);
282282
}
283283

284+
[IntegrationTest]
285+
public async Task SearchForLockedUnlockedIssues()
286+
{
287+
288+
var lockedIssuesRequest = new SearchIssuesRequest();
289+
lockedIssuesRequest.Repos.Add("octokit", "octokit.net");
290+
lockedIssuesRequest.Is = new List<IssueIsQualifier> { IssueIsQualifier.Issue, IssueIsQualifier.Locked };
291+
292+
var lockedIssues = await _gitHubClient.Search.SearchIssues(lockedIssuesRequest);
293+
294+
var unlockedIssuesRequest = new SearchIssuesRequest();
295+
296+
unlockedIssuesRequest.Repos.Add("octokit", "octokit.net");
297+
unlockedIssuesRequest.Is = new List<IssueIsQualifier> { IssueIsQualifier.Issue, IssueIsQualifier.Unlocked };
298+
299+
300+
var unlockedIssues = await _gitHubClient.Search.SearchIssues(unlockedIssuesRequest);
301+
302+
Assert.All(lockedIssues.Items, i => Assert.True(i.Locked));
303+
Assert.All(unlockedIssues.Items, i => Assert.False(i.Locked));
304+
}
305+
284306
[IntegrationTest]
285307
public async Task SearchForMergedPullRequests()
286308
{

Octokit.Tests/Models/SearchIssuesRequestTests.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,17 @@ public void HandlesIsAttributeCorrectly()
170170
Assert.Contains("is:pr", request.MergedQualifiers());
171171
}
172172

173+
[Fact]
174+
public void HandlesIsLockedUnlockedAttributeCorrectly()
175+
{
176+
var request = new SearchIssuesRequest("test");
177+
Assert.DoesNotContain(request.MergedQualifiers(), x => x.Contains("is:"));
178+
179+
request.Is = new List<IssueIsQualifier> { IssueIsQualifier.Locked, IssueIsQualifier.Unlocked };
180+
Assert.Contains("is:locked", request.MergedQualifiers());
181+
Assert.Contains("is:unlocked", request.MergedQualifiers());
182+
}
183+
173184
[Fact]
174185
public void HandlesStatusAttributeCorrectly()
175186
{

Octokit/Models/Request/SearchIssuesRequest.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,11 @@ public enum IssueIsQualifier
489489
[Parameter(Value = "private")]
490490
Private,
491491
[Parameter(Value = "public")]
492-
Public
492+
Public,
493+
[Parameter(Value = "locked")]
494+
Locked,
495+
[Parameter(Value = "unlocked")]
496+
Unlocked
493497
}
494498

495499
public enum IssueNoMetadataQualifier

docs/search.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,14 @@ request.Involves = "terrajobst";
6161
request.State = ItemState.All;
6262
// or to just search closed issues
6363
request.State = ItemState.Closed;
64+
65+
// you can filter by the "Is" qualifier
66+
// the enum IssueIsQualifier contains the supported values
67+
// you can filter for locked issues like this:
68+
request.Is = new List<IssueIsQualifier> {
69+
IssueIsQualifier.Issue,
70+
IssueIsQualifier.Locked
71+
};
6472
```
6573

6674
There's other options available to control how the results are returned:

0 commit comments

Comments
 (0)