From af9e8a2f787924825a41b357ecdfd5b5c48e5e4d Mon Sep 17 00:00:00 2001 From: Brendan Forster Date: Tue, 18 Feb 2014 16:02:47 +1100 Subject: [PATCH] refactoring for reuse in test suite --- .../Clients/PullRequestsClientTests.cs | 89 +++++++++---------- 1 file changed, 42 insertions(+), 47 deletions(-) diff --git a/Octokit.Tests.Integration/Clients/PullRequestsClientTests.cs b/Octokit.Tests.Integration/Clients/PullRequestsClientTests.cs index 7e74f955..09d3eb7b 100644 --- a/Octokit.Tests.Integration/Clients/PullRequestsClientTests.cs +++ b/Octokit.Tests.Integration/Clients/PullRequestsClientTests.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Net.Http.Headers; using System.Threading.Tasks; using Octokit; @@ -26,68 +27,62 @@ public class PullRequestsClientTests : IDisposable } [IntegrationTest] - public async Task CanRetrieveOnePullRequest() + public async Task CanCreate() { // create new commit for master branch - var baselineBlob = new NewBlob - { - Content = "Hello World!", - Encoding = EncodingType.Utf8 - }; - var baselineBlobResult = await _client.GitDatabase.Blob.Create(Helper.UserName, _repository.Name, baselineBlob); - - var baselineNewTree = new NewTree(); - baselineNewTree.Tree.Add(new NewTreeItem - { - Type = TreeType.Blob, - Mode = FileMode.File, - Path = "README.md", - Sha = baselineBlobResult.Sha - }); - - var baselineTreeResult = await _client.GitDatabase.Tree.Create(Helper.UserName, _repository.Name, baselineNewTree); - - var baselineNewCommit = new NewCommit("baseline for pull request", baselineTreeResult.Sha); - - var baselineCommit = await _client.GitDatabase.Commit.Create(Helper.UserName, _repository.Name, baselineNewCommit); - + var newMasterTree = await CreateTree(new Dictionary { { "README.md", "Hello World!" } }); + var newMaster = await CreateCommit("baseline for pull request", newMasterTree.Sha); // update master - await _client.GitDatabase.Reference.Update(Helper.UserName, _repository.Name, "heads/master", new ReferenceUpdate(baselineCommit.Sha, true)); + await _client.GitDatabase.Reference.Update(Helper.UserName, _repository.Name, "heads/master", new ReferenceUpdate(newMaster.Sha, true)); // create new commit for feature branch - var blob = new NewBlob - { - Content = "I am overwriting this blob with something new", - Encoding = EncodingType.Utf8 - }; - var blobResult = await _client.GitDatabase.Blob.Create(Helper.UserName, _repository.Name, blob); - - var newTree = new NewTree(); - newTree.Tree.Add(new NewTreeItem - { - Type = TreeType.Blob, - Mode = FileMode.File, - Path = "README.md", - Sha = blobResult.Sha - }); - - var treeResult = await _client.GitDatabase.Tree.Create(Helper.UserName, _repository.Name, newTree); - - var newCommit = new NewCommit("this is the commit to merge into the pull request", treeResult.Sha, baselineCommit.Sha); - - var commit = await _client.GitDatabase.Commit.Create(Helper.UserName, _repository.Name, newCommit); + 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); // create branch - await _client.GitDatabase.Reference.Create(Helper.UserName, _repository.Name, new NewReference("refs/heads/my-branch", commit.Sha)); + 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 result = await _pullRequestsClient.Create(Helper.UserName, _repository.Name, newPullRequest); Assert.Equal("a pull request", result.Title); } + async Task CreateTree(IDictionary treeContents) + { + var collection = new List(); + + foreach (var c in treeContents) + { + var baselineBlob = new NewBlob + { + Content = c.Value, + Encoding = EncodingType.Utf8 + }; + var baselineBlobResult = await _client.GitDatabase.Blob.Create(Helper.UserName, _repository.Name, baselineBlob); + + collection.Add(new NewTreeItem + { + Type = TreeType.Blob, + Mode = FileMode.File, + Path = c.Key, + Sha = baselineBlobResult.Sha + }); + } + + var newTree = new NewTree { Tree = collection }; + + return await _client.GitDatabase.Tree.Create(Helper.UserName, _repository.Name, newTree); + } + + async Task CreateCommit(string message, string sha) + { + var newCommit = new NewCommit(message, sha); + return await _client.GitDatabase.Commit.Create(Helper.UserName, _repository.Name, newCommit); + } + public void Dispose() { Helper.DeleteRepo(_repository);