mirror of
https://github.com/zoriya/octokit.net.git
synced 2026-05-31 02:05:39 +00:00
refactoring for reuse in test suite
This commit is contained in:
@@ -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<string, string> { { "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<string, string> { { "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<TreeResponse> CreateTree(IDictionary<string,string> treeContents)
|
||||
{
|
||||
var collection = new List<NewTreeItem>();
|
||||
|
||||
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<Commit> 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);
|
||||
|
||||
Reference in New Issue
Block a user