mirror of
https://github.com/zoriya/octokit.net.git
synced 2026-06-04 19:26:51 +00:00
added new integration tests
This commit is contained in:
@@ -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<string, string> { { "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<PullRequestFile>
|
||||
{
|
||||
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");
|
||||
|
||||
Reference in New Issue
Block a user