Add ability to pass ApiOptions to PullRequestsClient.Files (#2553)

* Add ability to pass ApiOptions to PullRequestsClient.Files

* Change Reactive PullRequestClient + Fix Test Mocking
This commit is contained in:
Gamer025
2022-08-28 16:12:27 +02:00
committed by GitHub
parent 3d53362bd7
commit 498c2aa0a5
6 changed files with 101 additions and 11 deletions

View File

@@ -231,6 +231,16 @@ namespace Octokit.Reactive
/// <param name="number">The pull request number</param>
IObservable<PullRequestCommit> Commits(long repositoryId, int number);
/// <summary>
/// Get the list of files on a pull request.
/// </summary>
/// <remarks>https://developer.github.com/v3/pulls/#list-pull-requests-files</remarks>
/// <param name="owner">The owner of the repository</param>
/// <param name="name">The name of the repository</param>
/// <param name="number">The pull request number</param>
/// <param name="options">Options for changing the API response</param>
IObservable<PullRequestFile> Files(string owner, string name, int number, ApiOptions options);
/// <summary>
/// Get the list of files on a pull request.
/// </summary>
@@ -240,6 +250,15 @@ namespace Octokit.Reactive
/// <param name="number">The pull request number</param>
IObservable<PullRequestFile> Files(string owner, string name, int number);
/// <summary>
/// Get the list of files on a pull request.
/// </summary>
/// <remarks>https://developer.github.com/v3/pulls/#list-pull-requests-files</remarks>
/// <param name="repositoryId">The Id of the repository</param>
/// <param name="number">The pull request number</param>
/// <param name="options">Options for changing the API response</param>
IObservable<PullRequestFile> Files(long repositoryId, int number, ApiOptions options);
/// <summary>
/// Get the list of files on a pull request.
/// </summary>

View File

@@ -359,12 +359,37 @@ namespace Octokit.Reactive
/// <param name="owner">The owner of the repository</param>
/// <param name="name">The name of the repository</param>
/// <param name="number">The pull request number</param>
public IObservable<PullRequestFile> Files(string owner, string name, int number)
/// <param name="options">Options for changing the API response</param>
public IObservable<PullRequestFile> Files(string owner, string name, int number, ApiOptions options)
{
Ensure.ArgumentNotNullOrEmptyString(owner, nameof(owner));
Ensure.ArgumentNotNullOrEmptyString(name, nameof(name));
return _connection.GetAndFlattenAllPages<PullRequestFile>(ApiUrls.PullRequestFiles(owner, name, number));
return _connection.GetAndFlattenAllPages<PullRequestFile>(ApiUrls.PullRequestFiles(owner, name, number), options);
}
/// <summary>
/// Get the list of files on a pull request.
/// </summary>
/// <remarks>https://developer.github.com/v3/pulls/#list-pull-requests-files</remarks>
/// <param name="owner">The owner of the repository</param>
/// <param name="name">The name of the repository</param>
/// <param name="number">The pull request number</param>
public IObservable<PullRequestFile> Files(string owner, string name, int number)
{
return Files(owner, name, number, ApiOptions.None);
}
/// <summary>
/// Get the list of files on a pull request.
/// </summary>
/// <remarks>https://developer.github.com/v3/pulls/#list-pull-requests-files</remarks>
/// <param name="repositoryId">The Id of the repository</param>
/// <param name="number">The pull request number</param>
/// <param name="options">Options for changing the API response</param>
public IObservable<PullRequestFile> Files(long repositoryId, int number, ApiOptions options)
{
return _connection.GetAndFlattenAllPages<PullRequestFile>(ApiUrls.PullRequestFiles(repositoryId, number), options);
}
/// <summary>
@@ -375,7 +400,7 @@ namespace Octokit.Reactive
/// <param name="number">The pull request number</param>
public IObservable<PullRequestFile> Files(long repositoryId, int number)
{
return _connection.GetAndFlattenAllPages<PullRequestFile>(ApiUrls.PullRequestFiles(repositoryId, number));
return Files(repositoryId, number, ApiOptions.None);
}
}
}

View File

@@ -461,7 +461,7 @@ namespace Octokit.Tests.Clients
await client.Files("fake", "repo", 42);
connection.Received()
.GetAll<PullRequestFile>(Arg.Is<Uri>(u => u.ToString() == "repos/fake/repo/pulls/42/files"));
.GetAll<PullRequestFile>(Arg.Is<Uri>(u => u.ToString() == "repos/fake/repo/pulls/42/files"), Args.ApiOptions);
}
[Fact]
@@ -473,7 +473,7 @@ namespace Octokit.Tests.Clients
await client.Files(1, 42);
connection.Received()
.GetAll<PullRequestFile>(Arg.Is<Uri>(u => u.ToString() == "repositories/1/pulls/42/files"));
.GetAll<PullRequestFile>(Arg.Is<Uri>(u => u.ToString() == "repositories/1/pulls/42/files"), Args.ApiOptions);
}
[Fact]

View File

@@ -704,7 +704,7 @@ namespace Octokit.Tests.Reactive
CreateResponse(HttpStatusCode.OK),
new List<PullRequestFile> { file }
);
connection.Get<List<PullRequestFile>>(Args.Uri, null)
connection.Get<List<PullRequestFile>>(Args.Uri, Arg.Any<IDictionary<string, string>>())
.Returns(Task.FromResult(response));
gitHubClient.Connection.Returns(connection);
var client = new ObservablePullRequestsClient(gitHubClient);
@@ -713,7 +713,7 @@ namespace Octokit.Tests.Reactive
Assert.Equal(1, files.Count);
Assert.Same(file, files[0]);
connection.Received().Get<List<PullRequestFile>>(new Uri(expectedUrl, UriKind.Relative), null);
connection.Received().Get<List<PullRequestFile>>(new Uri(expectedUrl, UriKind.Relative), Arg.Any<IDictionary<string, string>>());
}
[Fact]
@@ -728,7 +728,7 @@ namespace Octokit.Tests.Reactive
CreateResponse(HttpStatusCode.OK),
new List<PullRequestFile> { file }
);
connection.Get<List<PullRequestFile>>(Args.Uri, null)
connection.Get<List<PullRequestFile>>(Args.Uri, Arg.Any<IDictionary<string, string>>())
.Returns(Task.FromResult(response));
gitHubClient.Connection.Returns(connection);
var client = new ObservablePullRequestsClient(gitHubClient);
@@ -737,7 +737,7 @@ namespace Octokit.Tests.Reactive
Assert.Equal(1, files.Count);
Assert.Same(file, files[0]);
connection.Received().Get<List<PullRequestFile>>(new Uri(expectedUrl, UriKind.Relative), null);
connection.Received().Get<List<PullRequestFile>>(new Uri(expectedUrl, UriKind.Relative), Arg.Any<IDictionary<string, string>>());
}
[Fact]

View File

@@ -228,6 +228,16 @@ namespace Octokit
/// <param name="number">The pull request number</param>
Task<IReadOnlyList<PullRequestCommit>> Commits(long repositoryId, int number);
/// <summary>
/// Get the list of files on a pull request.
/// </summary>
/// <remarks>https://developer.github.com/v3/pulls/#list-pull-requests-files</remarks>
/// <param name="owner">The owner of the repository</param>
/// <param name="name">The name of the repository</param>
/// <param name="number">The pull request number</param>
/// <param name="options">Options for changing the API response</param>
Task<IReadOnlyList<PullRequestFile>> Files(string owner, string name, int number, ApiOptions options);
/// <summary>
/// Get the list of files on a pull request.
/// </summary>
@@ -237,6 +247,15 @@ namespace Octokit
/// <param name="number">The pull request number</param>
Task<IReadOnlyList<PullRequestFile>> Files(string owner, string name, int number);
/// <summary>
/// Get the list of files on a pull request.
/// </summary>
/// <remarks>https://developer.github.com/v3/pulls/#list-pull-requests-files</remarks>
/// <param name="repositoryId">The Id of the repository</param>
/// <param name="number">The pull request number</param>
/// <param name="options">Options for changing the API response</param>
Task<IReadOnlyList<PullRequestFile>> Files(long repositoryId, int number, ApiOptions options);
/// <summary>
/// Get the list of files on a pull request.
/// </summary>

View File

@@ -425,11 +425,25 @@ namespace Octokit
/// <param name="number">The pull request number</param>
[ManualRoute("GET", "/repos/{owner}/{repo}/pulls/{pull_number}/files")]
public Task<IReadOnlyList<PullRequestFile>> Files(string owner, string name, int number)
{
return Files(owner, name, number, ApiOptions.None);
}
/// <summary>
/// Get the list of files on a pull request.
/// </summary>
/// <remarks>https://developer.github.com/v3/pulls/#list-pull-requests-files</remarks>
/// <param name="owner">The owner of the repository</param>
/// <param name="name">The name of the repository</param>
/// <param name="number">The pull request number</param>
/// <param name="options">Options for changing the API response</param>
[ManualRoute("GET", "/repos/{owner}/{repo}/pulls/{pull_number}/files")]
public Task<IReadOnlyList<PullRequestFile>> Files(string owner, string name, int number, ApiOptions options)
{
Ensure.ArgumentNotNullOrEmptyString(owner, nameof(owner));
Ensure.ArgumentNotNullOrEmptyString(name, nameof(name));
return ApiConnection.GetAll<PullRequestFile>(ApiUrls.PullRequestFiles(owner, name, number));
return ApiConnection.GetAll<PullRequestFile>(ApiUrls.PullRequestFiles(owner, name, number), options);
}
/// <summary>
@@ -441,7 +455,20 @@ namespace Octokit
[ManualRoute("GET", "/repositories/{id}/pulls/{number}/files")]
public Task<IReadOnlyList<PullRequestFile>> Files(long repositoryId, int number)
{
return ApiConnection.GetAll<PullRequestFile>(ApiUrls.PullRequestFiles(repositoryId, number));
return Files(repositoryId, number, ApiOptions.None);
}
/// <summary>
/// Get the list of files on a pull request.
/// </summary>
/// <remarks>https://developer.github.com/v3/pulls/#list-pull-requests-files</remarks>
/// <param name="repositoryId">The Id of the repository</param>
/// <param name="number">The pull request number</param>
/// <param name="options">Options for changing the API response</param>
[ManualRoute("GET", "/repositories/{id}/pulls/{number}/files")]
public Task<IReadOnlyList<PullRequestFile>> Files(long repositoryId, int number, ApiOptions options)
{
return ApiConnection.GetAll<PullRequestFile>(ApiUrls.PullRequestFiles(repositoryId, number), options);
}
}
}