From af7196d0ebad1eb36b964d1b0bb7589dce0ade4a Mon Sep 17 00:00:00 2001 From: Brendan Forster Date: Tue, 18 Feb 2014 16:29:59 +1100 Subject: [PATCH] added test for update and ensure history is respected when creating PRs --- .../Clients/PullRequestsClientTests.cs | 44 ++++++++++++++++--- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/Octokit.Tests.Integration/Clients/PullRequestsClientTests.cs b/Octokit.Tests.Integration/Clients/PullRequestsClientTests.cs index 09d3eb7b..d6752744 100644 --- a/Octokit.Tests.Integration/Clients/PullRequestsClientTests.cs +++ b/Octokit.Tests.Integration/Clients/PullRequestsClientTests.cs @@ -29,27 +29,57 @@ public class PullRequestsClientTests : IDisposable [IntegrationTest] public async Task CanCreate() { + var master = await _client.GitDatabase.Reference.Get(Helper.UserName, _repository.Name, "heads/master"); + // create new commit for master branch var newMasterTree = await CreateTree(new Dictionary { { "README.md", "Hello World!" } }); - var newMaster = await CreateCommit("baseline for pull request", newMasterTree.Sha); + var newMaster = await CreateCommit("baseline for pull request", newMasterTree.Sha, master.Object.Sha); // update master await _client.GitDatabase.Reference.Update(Helper.UserName, _repository.Name, "heads/master", new ReferenceUpdate(newMaster.Sha, true)); // create new commit for feature branch var featureBranchTree = await CreateTree(new Dictionary { { "README.md", "I am overwriting this blob with something new" } }); - var newFeature = await CreateCommit("this is the commit to merge into the pull request", featureBranchTree.Sha); + var newFeature = await CreateCommit("this is the commit to merge into the pull request", featureBranchTree.Sha, master.Object.Sha); // create branch await _client.GitDatabase.Reference.Create(Helper.UserName, _repository.Name, new NewReference("refs/heads/my-branch", newFeature.Sha)); // create pull request - var head = Helper.UserName + ":my-branch"; - var newPullRequest = new NewPullRequest("a pull request", head, "master"); + var newPullRequest = new NewPullRequest("a pull request", "my-branch", "master"); var result = await _pullRequestsClient.Create(Helper.UserName, _repository.Name, newPullRequest); Assert.Equal("a pull request", result.Title); } + [IntegrationTest] + public async Task CanUpdate() + { + var master = await _client.GitDatabase.Reference.Get(Helper.UserName, _repository.Name, "heads/master"); + + // create new commit for master branch + var newMasterTree = await CreateTree(new Dictionary { { "README.md", "Hello World!" } }); + var newMaster = await CreateCommit("baseline for pull request", newMasterTree.Sha, master.Object.Sha); + // update master + await _client.GitDatabase.Reference.Update(Helper.UserName, _repository.Name, "heads/master", new ReferenceUpdate(newMaster.Sha, true)); + + // create new commit for feature branch + var featureBranchTree = await CreateTree(new Dictionary { { "README.md", "I am overwriting this blob with something new" } }); + var newFeature = await CreateCommit("this is the commit to merge into the pull request", featureBranchTree.Sha, master.Object.Sha); + + // create branch + await _client.GitDatabase.Reference.Create(Helper.UserName, _repository.Name, new NewReference("refs/heads/my-branch", newFeature.Sha)); + + // create pull request + var newPullRequest = new NewPullRequest("a pull request", "my-branch", "master"); + var pullRequest = await _pullRequestsClient.Create(Helper.UserName, _repository.Name, newPullRequest); + + var updatePullRequest = new PullRequestUpdate { Title = "updated title", Body = "Hello New Body" }; + var result = await _pullRequestsClient.Update(Helper.UserName, _repository.Name, pullRequest.Number, updatePullRequest); + + Assert.Equal(updatePullRequest.Title, result.Title); + Assert.Equal(updatePullRequest.Body, result.Body); + } + async Task CreateTree(IDictionary treeContents) { var collection = new List(); @@ -77,14 +107,14 @@ public class PullRequestsClientTests : IDisposable return await _client.GitDatabase.Tree.Create(Helper.UserName, _repository.Name, newTree); } - async Task CreateCommit(string message, string sha) + async Task CreateCommit(string message, string sha, string parent) { - var newCommit = new NewCommit(message, sha); + var newCommit = new NewCommit(message, sha, parent); return await _client.GitDatabase.Commit.Create(Helper.UserName, _repository.Name, newCommit); } public void Dispose() { - Helper.DeleteRepo(_repository); + //Helper.DeleteRepo(_repository); } }