private static ObservableAssigneesClient CreateFixtureWithNonReactiveClient() { var nonreactiveClient = new AssigneesClient(Substitute.For<IApiConnection>()); var github = Substitute.For<IGitHubClient>(); github.Issue.Assignee.Returns(nonreactiveClient); return new ObservableAssigneesClient(github); }
public async Task EnsuresNonNullArguments() { var client = new AssigneesClient(Substitute.For<IApiConnection>()); await AssertEx.Throws<ArgumentNullException>(async () => await client.GetForRepository(null, "name")); await AssertEx.Throws<ArgumentException>(async () => await client.GetForRepository(null, "")); await AssertEx.Throws<ArgumentNullException>(async () => await client.GetForRepository("owner", null)); await AssertEx.Throws<ArgumentException>(async () => await client.GetForRepository("", null)); }
public void RequestsCorrectUrl() { var connection = Substitute.For<IApiConnection>(); var client = new AssigneesClient(connection); client.GetForRepository("fake", "repo"); connection.Received().GetAll<User>(Arg.Is<Uri>(u => u.ToString() == "repos/fake/repo/assignees")); }
public async Task EnsuresNonNullArguments() { var client = new AssigneesClient(Substitute.For<IApiConnection>()); await Assert.ThrowsAsync<ArgumentNullException>(() => client.CheckAssignee(null, "name", "tweety")); await Assert.ThrowsAsync<ArgumentNullException>(() => client.CheckAssignee(null, "", "tweety")); await Assert.ThrowsAsync<ArgumentNullException>(() => client.CheckAssignee("owner", null, "tweety")); await Assert.ThrowsAsync<ArgumentException>(() => client.CheckAssignee("", null, "tweety")); await Assert.ThrowsAsync<ArgumentNullException>(() => client.CheckAssignee("owner", "name", null)); await Assert.ThrowsAsync<ArgumentException>(() => client.CheckAssignee("owner", "name", "")); }
public async Task ThrowsExceptionForInvalidStatusCode() { var response = Task.Factory.StartNew<IResponse<object>>(() => new ApiResponse<object> { StatusCode = HttpStatusCode.Conflict }); var connection = Substitute.For<IConnection>(); connection.GetAsync<object>(Arg.Is<Uri>(u => u.ToString() == "repos/foo/bar/assignees/cody"), null, null).Returns(response); var apiConnection = Substitute.For<IApiConnection>(); apiConnection.Connection.Returns(connection); var client = new AssigneesClient(apiConnection); AssertEx.Throws<ApiException>(async () => await client.CheckAssignee("foo", "bar", "cody")); }
public async Task ThrowsExceptionForInvalidStatusCode() { var response = Task.Factory.StartNew<IApiResponse<object>>(() => new ApiResponse<object>(new Response(HttpStatusCode.Conflict, null, new Dictionary<string, string>(), "application/json"))); var connection = Substitute.For<IConnection>(); connection.Get<object>(Arg.Is<Uri>(u => u.ToString() == "repos/foo/bar/assignees/cody"), null, null).Returns(response); var apiConnection = Substitute.For<IApiConnection>(); apiConnection.Connection.Returns(connection); var client = new AssigneesClient(apiConnection); await Assert.ThrowsAsync<ApiException>(() => client.CheckAssignee("foo", "bar", "cody")); }
public async Task RequestsCorrectUrlWithRepositoryId() { var connection = Substitute.For<IApiConnection>(); var client = new AssigneesClient(connection); await client.GetAllForRepository(1); connection.Received().GetAll<User>( Arg.Is<Uri>(u => u.ToString() == "repositories/1/assignees"), null, AcceptHeaders.StableVersion, Args.ApiOptions); }
public async Task RequestsCorrectValueForStatusCode(HttpStatusCode status, bool expected) { var response = Task.Factory.StartNew<IResponse<object>>(() => new ApiResponse<object> { StatusCode = status }); var connection = Substitute.For<IConnection>(); connection.GetAsync<object>(Arg.Is<Uri>(u => u.ToString() == "repos/foo/bar/assignees/cody"), null, null).Returns(response); var apiConnection = Substitute.For<IApiConnection>(); apiConnection.Connection.Returns(connection); var client = new AssigneesClient(apiConnection); var result = await client.CheckAssignee("foo", "bar", "cody"); Assert.Equal(expected, result); }
public async Task EnsuresNonNullArguments() { var client = new AssigneesClient(Substitute.For <IApiConnection>()); var newAssignees = new AssigneesUpdate(new List <string>() { "assignee1", "assignee2" }); await Assert.ThrowsAsync <ArgumentException>(() => client.RemoveAssignees("", "name", 2, newAssignees)); await Assert.ThrowsAsync <ArgumentException>(() => client.RemoveAssignees("owner", "", 2, newAssignees)); await Assert.ThrowsAsync <ArgumentNullException>(() => client.RemoveAssignees("owner", "name", 2, null)); await Assert.ThrowsAsync <ArgumentNullException>(() => client.RemoveAssignees(null, "name", 2, newAssignees)); await Assert.ThrowsAsync <ArgumentNullException>(() => client.RemoveAssignees("owner", null, 2, newAssignees)); }
public async Task RequestsCorrectValueForStatusCode(HttpStatusCode status, bool expected) { var response = Task.Factory.StartNew <IResponse <object> >(() => new ApiResponse <object> { StatusCode = status }); var connection = Substitute.For <IConnection>(); connection.GetAsync <object>(Arg.Is <Uri>(u => u.ToString() == "repos/foo/bar/assignees/cody"), null, null).Returns(response); var apiConnection = Substitute.For <IApiConnection>(); apiConnection.Connection.Returns(connection); var client = new AssigneesClient(apiConnection); var result = await client.CheckAssignee("foo", "bar", "cody"); Assert.Equal(expected, result); }
public void RequestsCorrectUrlWithApiOptions() { var connection = Substitute.For <IApiConnection>(); var client = new AssigneesClient(connection); var options = new ApiOptions { PageCount = 1, PageSize = 1, StartPage = 1 }; client.GetAllForRepository("fake", "repo", options); connection.Received().GetAll <User>( Arg.Is <Uri>(u => u.ToString() == "repos/fake/repo/assignees"), null, AcceptHeaders.StableVersion, options); }
public async Task EnsuresNonNullArguments() { var client = new AssigneesClient(Substitute.For <IApiConnection>()); await Assert.ThrowsAsync <ArgumentNullException>(() => client.CheckAssignee(null, "name", "tweety")); await Assert.ThrowsAsync <ArgumentNullException>(() => client.CheckAssignee("owner", null, "tweety")); await Assert.ThrowsAsync <ArgumentNullException>(() => client.CheckAssignee("owner", "name", null)); await Assert.ThrowsAsync <ArgumentNullException>(() => client.CheckAssignee(1, null)); await Assert.ThrowsAsync <ArgumentException>(() => client.CheckAssignee("", "name", "tweety")); await Assert.ThrowsAsync <ArgumentException>(() => client.CheckAssignee("owner", "", "tweety")); await Assert.ThrowsAsync <ArgumentException>(() => client.CheckAssignee("owner", "name", "")); await Assert.ThrowsAsync <ArgumentException>(() => client.CheckAssignee(1, "")); }
public async Task RequestsCorrectUrlWithApiOptions() { var connection = Substitute.For<IApiConnection>(); var client = new AssigneesClient(connection); var options = new ApiOptions { PageCount = 1, PageSize = 1, StartPage = 1 }; await client.GetAllForRepository("fake", "repo", options); connection.Received().GetAll<User>( Arg.Is<Uri>(u => u.ToString() == "repos/fake/repo/assignees"), null, AcceptHeaders.StableVersion, options); }
public async Task EnsuresNonNullArguments() { var client = new AssigneesClient(Substitute.For <IApiConnection>()); await Assert.ThrowsAsync <ArgumentNullException>(() => client.GetAllForRepository(null, "name")); await Assert.ThrowsAsync <ArgumentNullException>(() => client.GetAllForRepository("owner", null)); await Assert.ThrowsAsync <ArgumentNullException>(() => client.GetAllForRepository(null, "name", ApiOptions.None)); await Assert.ThrowsAsync <ArgumentNullException>(() => client.GetAllForRepository("owner", null, ApiOptions.None)); await Assert.ThrowsAsync <ArgumentNullException>(() => client.GetAllForRepository("owner", "name", null)); await Assert.ThrowsAsync <ArgumentNullException>(() => client.GetAllForRepository(1, null)); await Assert.ThrowsAsync <ArgumentException>(() => client.GetAllForRepository("", "name")); await Assert.ThrowsAsync <ArgumentException>(() => client.GetAllForRepository("owner", "")); await Assert.ThrowsAsync <ArgumentException>(() => client.GetAllForRepository("", "name", ApiOptions.None)); await Assert.ThrowsAsync <ArgumentException>(() => client.GetAllForRepository("owner", "", ApiOptions.None)); }
public async Task EnsuresNonNullArguments() { var client = new AssigneesClient(Substitute.For<IApiConnection>()); await Assert.ThrowsAsync<ArgumentNullException>(() => client.GetAllForRepository(null, "name")); await Assert.ThrowsAsync<ArgumentNullException>(() => client.GetAllForRepository("owner", null)); await Assert.ThrowsAsync<ArgumentNullException>(() => client.GetAllForRepository(null, "name", ApiOptions.None)); await Assert.ThrowsAsync<ArgumentNullException>(() => client.GetAllForRepository("owner", null, ApiOptions.None)); await Assert.ThrowsAsync<ArgumentNullException>(() => client.GetAllForRepository("owner", "name", null)); await Assert.ThrowsAsync<ArgumentNullException>(() => client.GetAllForRepository(1, null)); await Assert.ThrowsAsync<ArgumentException>(() => client.GetAllForRepository("", "name")); await Assert.ThrowsAsync<ArgumentException>(() => client.GetAllForRepository("owner", "")); await Assert.ThrowsAsync<ArgumentException>(() => client.GetAllForRepository("", "name", ApiOptions.None)); await Assert.ThrowsAsync<ArgumentException>(() => client.GetAllForRepository("owner", "", ApiOptions.None)); }
public async Task RequestsCorrectValueForStatusCodeWithRepositoryId(HttpStatusCode status, bool expected) { var response = Task.Factory.StartNew<IApiResponse<object>>(() => new ApiResponse<object>(new Response(status, null, new Dictionary<string, string>(), "application/json"))); var connection = Substitute.For<IConnection>(); connection.Get<object>(Arg.Is<Uri>(u => u.ToString() == "repositories/1/assignees/cody"), null, null).Returns(response); var apiConnection = Substitute.For<IApiConnection>(); apiConnection.Connection.Returns(connection); var client = new AssigneesClient(apiConnection); var result = await client.CheckAssignee(1, "cody"); Assert.Equal(expected, result); }