From 8e3d7be4cd8094d9fcafc8268de73829104ae27f Mon Sep 17 00:00:00 2001 From: "aedampir@gmail.com" Date: Thu, 16 Jun 2016 19:54:03 +0700 Subject: [PATCH] added new integration tests --- .../Clients/PullRequestsClientTests.cs | 324 +++++++++++++++++- 1 file changed, 319 insertions(+), 5 deletions(-) diff --git a/Octokit.Tests.Integration/Clients/PullRequestsClientTests.cs b/Octokit.Tests.Integration/Clients/PullRequestsClientTests.cs index da1a79c7..aecb9a4c 100644 --- a/Octokit.Tests.Integration/Clients/PullRequestsClientTests.cs +++ b/Octokit.Tests.Integration/Clients/PullRequestsClientTests.cs @@ -4,8 +4,8 @@ using System.Linq; using System.Threading.Tasks; using Octokit; using Octokit.Tests.Integration; -using Xunit; using Octokit.Tests.Integration.Helpers; +using Xunit; public class PullRequestsClientTests : IDisposable { @@ -37,6 +37,16 @@ public class PullRequestsClientTests : IDisposable Assert.Equal("a pull request", result.Title); } + [IntegrationTest] + public async Task CanCreateWithRepositoryId() + { + await CreateTheWorld(); + + var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); + var result = await _fixture.Create(_context.Repository.Id, newPullRequest); + Assert.Equal("a pull request", result.Title); + } + [IntegrationTest] public async Task CanGetForRepository() { @@ -51,6 +61,20 @@ public class PullRequestsClientTests : IDisposable Assert.Equal(result.Title, pullRequests[0].Title); } + [IntegrationTest] + public async Task CanGetForRepositoryWithRepositoryId() + { + await CreateTheWorld(); + + var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); + var result = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); + + var pullRequests = await _fixture.GetAllForRepository(_context.Repository.Id); + + Assert.Equal(1, pullRequests.Count); + Assert.Equal(result.Title, pullRequests[0].Title); + } + [IntegrationTest] public async Task ReturnsCorrectCountOfPullRequestsWithoutStart() { @@ -71,6 +95,26 @@ public class PullRequestsClientTests : IDisposable Assert.Equal(result.Title, pullRequests[0].Title); } + [IntegrationTest] + public async Task ReturnsCorrectCountOfPullRequestsWithoutStartWithRepositoryId() + { + await CreateTheWorld(); + + var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); + var result = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); + + var options = new ApiOptions + { + PageSize = 3, + PageCount = 1 + }; + + var pullRequests = await _fixture.GetAllForRepository(_context.Repository.Id, options); + + Assert.Equal(1, pullRequests.Count); + Assert.Equal(result.Title, pullRequests[0].Title); + } + [IntegrationTest] public async Task ReturnsCorrectCountOfPullRequestsWithStart() { @@ -94,6 +138,29 @@ public class PullRequestsClientTests : IDisposable Assert.Equal(result.Title, pullRequests[0].Title); } + [IntegrationTest] + public async Task ReturnsCorrectCountOfPullRequestsWithStartWithRepositoryId() + { + await CreateTheWorld(); + + var newPullRequest1 = new NewPullRequest("a pull request 1", branchName, "master"); + var newPullRequest2 = new NewPullRequest("a pull request 2", otherBranchName, "master"); + await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest1); + var result = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest2); + + var options = new ApiOptions + { + PageSize = 1, + PageCount = 1, + StartPage = 1 + }; + + var pullRequests = await _fixture.GetAllForRepository(_context.Repository.Id, options); + + Assert.Equal(1, pullRequests.Count); + Assert.Equal(result.Title, pullRequests[0].Title); + } + [IntegrationTest] public async Task ReturnsDistinctPullRequestsBasedOnStartPage() { @@ -124,6 +191,36 @@ public class PullRequestsClientTests : IDisposable Assert.NotEqual(firstPage[0].Title, secondPage[0].Title); } + [IntegrationTest] + public async Task ReturnsDistinctPullRequestsBasedOnStartPageWithRepositoryId() + { + await CreateTheWorld(); + + var newPullRequest1 = new NewPullRequest("a pull request 1", branchName, "master"); + var newPullRequest2 = new NewPullRequest("a pull request 2", otherBranchName, "master"); + await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest1); + await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest2); + + var startOptions = new ApiOptions + { + PageSize = 1, + PageCount = 1 + }; + + var firstPage = await _fixture.GetAllForRepository(_context.Repository.Id, startOptions); + + var skipStartOptions = new ApiOptions + { + PageSize = 1, + PageCount = 1, + StartPage = 2 + }; + + var secondPage = await _fixture.GetAllForRepository(_context.Repository.Id, skipStartOptions); + + Assert.NotEqual(firstPage[0].Title, secondPage[0].Title); + } + [IntegrationTest] public async Task CanGetOpenPullRequest() { @@ -139,6 +236,21 @@ public class PullRequestsClientTests : IDisposable Assert.Equal(result.Title, pullRequests[0].Title); } + [IntegrationTest] + public async Task CanGetOpenPullRequestWithRepositoryId() + { + await CreateTheWorld(); + + var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); + var result = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); + + var openPullRequests = new PullRequestRequest { State = ItemStateFilter.Open }; + var pullRequests = await _fixture.GetAllForRepository(_context.Repository.Id, openPullRequests); + + Assert.Equal(1, pullRequests.Count); + Assert.Equal(result.Title, pullRequests[0].Title); + } + [IntegrationTest] public async Task ReturnsCorrectCountOfPullRequestsWithoutStartParameterized() { @@ -160,6 +272,27 @@ public class PullRequestsClientTests : IDisposable Assert.Equal(result.Title, pullRequests[0].Title); } + [IntegrationTest] + public async Task ReturnsCorrectCountOfPullRequestsWithoutStartParameterizedWithRepositoryId() + { + await CreateTheWorld(); + + var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); + var result = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); + + var options = new ApiOptions + { + PageSize = 3, + PageCount = 1 + }; + + var openPullRequests = new PullRequestRequest { State = ItemStateFilter.Open }; + var pullRequests = await _fixture.GetAllForRepository(_context.Repository.Id, openPullRequests, options); + + Assert.Equal(1, pullRequests.Count); + Assert.Equal(result.Title, pullRequests[0].Title); + } + [IntegrationTest] public async Task ReturnsCorrectCountOfPullRequestsWithStartParameterized() { @@ -184,6 +317,30 @@ public class PullRequestsClientTests : IDisposable Assert.Equal(result.Title, pullRequests[0].Title); } + [IntegrationTest] + public async Task ReturnsCorrectCountOfPullRequestsWithStartParameterizedWithRepositoryId() + { + await CreateTheWorld(); + + var newPullRequest1 = new NewPullRequest("a pull request 1", branchName, "master"); + var newPullRequest2 = new NewPullRequest("a pull request 2", otherBranchName, "master"); + await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest1); + var result = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest2); + + var options = new ApiOptions + { + PageSize = 1, + PageCount = 1, + StartPage = 1 + }; + + var openPullRequests = new PullRequestRequest { State = ItemStateFilter.Open }; + var pullRequests = await _fixture.GetAllForRepository(_context.Repository.Id, openPullRequests, options); + + Assert.Equal(1, pullRequests.Count); + Assert.Equal(result.Title, pullRequests[0].Title); + } + [IntegrationTest] public async Task ReturnsDistinctPullRequestsBasedOnStartPageParameterized() { @@ -201,7 +358,7 @@ public class PullRequestsClientTests : IDisposable PageSize = 1, PageCount = 1 }; - + var firstPage = await _fixture.GetAllForRepository(_context.RepositoryOwner, _context.RepositoryName, openPullRequests, startOptions); var skipStartOptions = new ApiOptions @@ -216,6 +373,38 @@ public class PullRequestsClientTests : IDisposable Assert.NotEqual(firstPage[0].Title, secondPage[0].Title); } + [IntegrationTest] + public async Task ReturnsDistinctPullRequestsBasedOnStartPageParameterizedWithRepositoryId() + { + await CreateTheWorld(); + + var newPullRequest1 = new NewPullRequest("a pull request 1", branchName, "master"); + var newPullRequest2 = new NewPullRequest("a pull request 2", otherBranchName, "master"); + await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest1); + await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest2); + + var openPullRequests = new PullRequestRequest { State = ItemStateFilter.Open }; + + var startOptions = new ApiOptions + { + PageSize = 1, + PageCount = 1 + }; + + var firstPage = await _fixture.GetAllForRepository(_context.Repository.Id, openPullRequests, startOptions); + + var skipStartOptions = new ApiOptions + { + PageSize = 1, + PageCount = 1, + StartPage = 2 + }; + + var secondPage = await _fixture.GetAllForRepository(_context.Repository.Id, openPullRequests, skipStartOptions); + + Assert.NotEqual(firstPage[0].Title, secondPage[0].Title); + } + [IntegrationTest] public async Task IgnoresOpenPullRequest() { @@ -230,6 +419,20 @@ public class PullRequestsClientTests : IDisposable Assert.Empty(pullRequests); } + [IntegrationTest] + public async Task IgnoresOpenPullRequestWithRepositoryId() + { + await CreateTheWorld(); + + var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); + await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); + + var openPullRequests = new PullRequestRequest { State = ItemStateFilter.Closed }; + var pullRequests = await _fixture.GetAllForRepository(_context.Repository.Id, openPullRequests); + + Assert.Empty(pullRequests); + } + [IntegrationTest] public async Task CanUpdate() { @@ -245,6 +448,21 @@ public class PullRequestsClientTests : IDisposable Assert.Equal(updatePullRequest.Body, result.Body); } + [IntegrationTest] + public async Task CanUpdateWithRepositoryId() + { + await CreateTheWorld(); + + var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); + var pullRequest = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); + + var updatePullRequest = new PullRequestUpdate { Title = "updated title", Body = "Hello New Body" }; + var result = await _fixture.Update(_context.Repository.Id, pullRequest.Number, updatePullRequest); + + Assert.Equal(updatePullRequest.Title, result.Title); + Assert.Equal(updatePullRequest.Body, result.Body); + } + [IntegrationTest] public async Task CanClose() { @@ -332,6 +550,19 @@ public class PullRequestsClientTests : IDisposable Assert.False(result); } + [IntegrationTest] + public async Task IsNotMergedInitiallyWithRepositoryId() + { + await CreateTheWorld(); + + var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); + var pullRequest = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); + + var result = await _fixture.Merged(_context.Repository.Id, pullRequest.Number); + + Assert.False(result); + } + [IntegrationTest] public async Task CanBeMerged() { @@ -346,6 +577,20 @@ public class PullRequestsClientTests : IDisposable Assert.True(result.Merged); } + [IntegrationTest] + public async Task CanBeMergedWithRepositoryId() + { + await CreateTheWorld(); + + var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); + var pullRequest = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); + + var merge = new MergePullRequest { CommitMessage = "thing the thing" }; + var result = await _fixture.Merge(_context.Repository.Id, pullRequest.Number, merge); + + Assert.True(result.Merged); + } + [IntegrationTest] public async Task CanBeMergedWithNoOptionalInput() { @@ -359,6 +604,7 @@ public class PullRequestsClientTests : IDisposable Assert.True(result.Merged); } + [IntegrationTest] public async Task CanBeMergedWithShaSpecified() { @@ -384,14 +630,12 @@ public class PullRequestsClientTests : IDisposable var merge = new MergePullRequest { CommitMessage = "fake commit message", CommitTitle = "fake title", Squash = true }; var result = await _fixture.Merge(Helper.UserName, _context.RepositoryName, pullRequest.Number, merge); var commit = await _github.Repository.Commit.Get(_context.RepositoryOwner, _context.RepositoryName, result.Sha); - var message = commit.Commit.Message; + Assert.True(result.Merged); Assert.Equal("fake title\n\nfake commit message", commit.Commit.Message); - } [IntegrationTest] - public async Task CannotBeMergedDueMismatchConflict() { await CreateTheWorld(); @@ -461,6 +705,20 @@ public class PullRequestsClientTests : IDisposable Assert.Equal("this is the commit to merge into the pull request", result[0].Commit.Message); } + [IntegrationTest] + public async Task CanBrowseCommitsWithRepositoryId() + { + await CreateTheWorld(); + + var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); + var pullRequest = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); + + var result = await _fixture.Commits(_context.Repository.Id, pullRequest.Number); + + Assert.Equal(1, result.Count); + Assert.Equal("this is the commit to merge into the pull request", result[0].Commit.Message); + } + [IntegrationTest] public async Task CanGetCommitsAndCommentCount() { @@ -493,6 +751,38 @@ public class PullRequestsClientTests : IDisposable Assert.Equal(1, result[1].Commit.CommentCount); } + [IntegrationTest] + public async Task CanGetCommitsAndCommentCountWithRepositoryId() + { + await CreateTheWorld(); + + var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); + var pullRequest = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); + + // create new commit for branch + + const string commitMessage = "Another commit in branch"; + + var branch = await _github.Git.Reference.Get(Helper.UserName, _context.RepositoryName, "heads/" + branchName); + + var newTree = await CreateTree(new Dictionary { { "README.md", "Hello World!" } }); + var newCommit = await CreateCommit(commitMessage, newTree.Sha, branch.Object.Sha); + await _github.Git.Reference.Update(Helper.UserName, _context.RepositoryName, "heads/" + branchName, new ReferenceUpdate(newCommit.Sha)); + + await _repositoryCommentsClient.Create(Helper.UserName, _context.RepositoryName, newCommit.Sha, new NewCommitComment("I am a nice comment") { Path = "README.md", Position = 1 }); + + // don't try this at home + await Task.Delay(TimeSpan.FromSeconds(5)); + + var result = await _fixture.Commits(_context.Repository.Id, pullRequest.Number); + + Assert.Equal(2, result.Count); + Assert.Equal("this is the commit to merge into the pull request", result[0].Commit.Message); + Assert.Equal(0, result[0].Commit.CommentCount); + Assert.Equal(commitMessage, result[1].Commit.Message); + Assert.Equal(1, result[1].Commit.CommentCount); + } + [IntegrationTest] public async Task CanBrowseFiles() { @@ -517,6 +807,30 @@ public class PullRequestsClientTests : IDisposable } } + [IntegrationTest] + public async Task CanBrowseFilesWithRepositoryId() + { + var expectedFiles = new List + { + new PullRequestFile(null, "Octokit.Tests.Integration/Clients/ReferencesClientTests.cs", null, 8, 3, 11, null, null, null, null), + new PullRequestFile(null, "Octokit/Clients/ApiPagination.cs", null, 21, 6, 27, null, null, null, null), + new PullRequestFile(null, "Octokit/Helpers/IApiPagination.cs", null, 1, 1, 2, null, null, null, null), + new PullRequestFile(null, "Octokit/Http/ApiConnection.cs", null, 1, 1, 2, null, null, null, null) + }; + + var result = await _fixture.Files(7528679, 288); + + Assert.Equal(4, result.Count); + Assert.True(expectedFiles.All(expectedFile => result.Any(file => file.FileName.Equals(expectedFile.FileName)))); + foreach (var file in result) + { + var expectedFile = expectedFiles.Find(prf => file.FileName.Equals(prf.FileName)); + Assert.Equal(expectedFile.Changes, file.Changes); + Assert.Equal(expectedFile.Additions, file.Additions); + Assert.Equal(expectedFile.Deletions, file.Deletions); + } + } + async Task CreateTheWorld() { var master = await _github.Git.Reference.Get(Helper.UserName, _context.RepositoryName, "heads/master");