added test for update and ensure history is respected when creating PRs

This commit is contained in:
Brendan Forster
2014-02-18 16:29:59 +11:00
parent af9e8a2f78
commit af7196d0eb
@@ -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<string, string> { { "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<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);
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<string, string> { { "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<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, 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<TreeResponse> CreateTree(IDictionary<string,string> treeContents)
{
var collection = new List<NewTreeItem>();
@@ -77,14 +107,14 @@ public class PullRequestsClientTests : IDisposable
return await _client.GitDatabase.Tree.Create(Helper.UserName, _repository.Name, newTree);
}
async Task<Commit> CreateCommit(string message, string sha)
async Task<Commit> 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);
}
}