mirror of
https://github.com/zoriya/octokit.net.git
synced 2026-06-01 10:25:36 +00:00
Unit tests for QueuedOpertaion
This commit is contained in:
@@ -285,6 +285,57 @@ namespace Octokit.Tests.Http
|
||||
connection.Received().GetAsync<object>(queuedOperationUrl);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task WhenGetReturnsNotOkOrAcceptedApiExceptionIsThrown()
|
||||
{
|
||||
var queuedOperationUrl = new Uri("anything", UriKind.Relative);
|
||||
|
||||
const HttpStatusCode statusCode = HttpStatusCode.PartialContent;
|
||||
IResponse<object> response = new ApiResponse<object> { BodyAsObject = new object(), StatusCode = statusCode };
|
||||
var connection = Substitute.For<IConnection>();
|
||||
connection.GetAsync<object>(queuedOperationUrl).Returns(Task.FromResult(response));
|
||||
var apiConnection = new ApiConnection(connection);
|
||||
|
||||
await AssertEx.Throws<ApiException>(async () => await apiConnection.GetQueuedOperation<object>(queuedOperationUrl));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task WhenGetReturnsOkThenBodyAsObjectIsReturned()
|
||||
{
|
||||
var queuedOperationUrl = new Uri("anything", UriKind.Relative);
|
||||
|
||||
var result = new object();
|
||||
const HttpStatusCode statusCode = HttpStatusCode.OK;
|
||||
IResponse<object> response = new ApiResponse<object> { BodyAsObject = result, StatusCode = statusCode };
|
||||
var connection = Substitute.For<IConnection>();
|
||||
connection.GetAsync<object>(queuedOperationUrl).Returns(Task.FromResult(response));
|
||||
var apiConnection = new ApiConnection(connection);
|
||||
|
||||
var actualResult = await apiConnection.GetQueuedOperation<object>(queuedOperationUrl);
|
||||
Assert.Same(actualResult,result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetIsRepeatedUntilHttpStatusCodeOkIsReturned()
|
||||
{
|
||||
var queuedOperationUrl = new Uri("anything", UriKind.Relative);
|
||||
|
||||
var result = new object();
|
||||
IResponse<object> firstResponse = new ApiResponse<object> { BodyAsObject = result, StatusCode = HttpStatusCode.Accepted };
|
||||
IResponse<object> completedResponse = new ApiResponse<object> { BodyAsObject = result, StatusCode = HttpStatusCode.OK };
|
||||
var connection = Substitute.For<IConnection>();
|
||||
connection.GetAsync<object>(queuedOperationUrl)
|
||||
.Returns(x => Task.FromResult(firstResponse),
|
||||
x => Task.FromResult(firstResponse),
|
||||
x => Task.FromResult(completedResponse));
|
||||
|
||||
var apiConnection = new ApiConnection(connection);
|
||||
|
||||
await apiConnection.GetQueuedOperation<object>(queuedOperationUrl);
|
||||
|
||||
connection.Received(3).GetAsync<object>(queuedOperationUrl);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task EnsuresArgumentNotNull()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user