From d12d5b9a5f8399eb2f6a17278a90d0d9a998f022 Mon Sep 17 00:00:00 2001 From: "aedampir@gmail.com" Date: Thu, 16 Jun 2016 17:13:28 +0700 Subject: [PATCH] added new integration tests --- .../Clients/MilestonesClientTests.cs | 293 +++++++++++++++++- 1 file changed, 279 insertions(+), 14 deletions(-) diff --git a/Octokit.Tests.Integration/Clients/MilestonesClientTests.cs b/Octokit.Tests.Integration/Clients/MilestonesClientTests.cs index bd4cb575..fc672c39 100644 --- a/Octokit.Tests.Integration/Clients/MilestonesClientTests.cs +++ b/Octokit.Tests.Integration/Clients/MilestonesClientTests.cs @@ -1,5 +1,4 @@ using System; -using System.Linq; using System.Threading.Tasks; using Octokit; using Octokit.Tests.Integration; @@ -33,6 +32,77 @@ public class MilestonesClientTests : IDisposable Assert.Equal("a milestone", result.Title); } + [IntegrationTest] + public async Task CanRetrieveOneMilestoneWithRepositoryId() + { + var newMilestone = new NewMilestone("a milestone") { DueOn = DateTime.Now }; + var created = await _milestonesClient.Create(_context.Repository.Id, newMilestone); + + var result = await _milestonesClient.Get(_context.Repository.Id, created.Number); + + Assert.Equal("a milestone", result.Title); + } + + [IntegrationTest] + public async Task CanDeleteOneMilestone() + { + var newMilestone = new NewMilestone("a milestone") { DueOn = DateTime.Now }; + var created = await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, newMilestone); + + var result1 = await _milestonesClient.Get(_context.RepositoryOwner, _context.RepositoryName, created.Number); + Assert.Equal("a milestone", result1.Title); + + await _milestonesClient.Delete(_context.RepositoryOwner, _context.RepositoryName, created.Number); + + var result2 = await _milestonesClient.Get(_context.RepositoryOwner, _context.RepositoryName, created.Number); + Assert.Null(result2); + } + + [IntegrationTest] + public async Task CanDeleteOneMilestoneWithRepositoryId() + { + var newMilestone = new NewMilestone("a milestone") { DueOn = DateTime.Now }; + var created = await _milestonesClient.Create(_context.Repository.Id, newMilestone); + + var result1 = await _milestonesClient.Get(_context.Repository.Id, created.Number); + Assert.Equal("a milestone", result1.Title); + + await _milestonesClient.Delete(_context.Repository.Id, created.Number); + + var result2 = await _milestonesClient.Get(_context.Repository.Id, created.Number); + Assert.Null(result2); + } + + [IntegrationTest] + public async Task CanUpdateOneMilestone() + { + var newMilestone = new NewMilestone("a milestone") { DueOn = DateTime.Now }; + var created = await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, newMilestone); + + var result1 = await _milestonesClient.Get(_context.RepositoryOwner, _context.RepositoryName, created.Number); + Assert.Equal("a milestone", result1.Title); + + await _milestonesClient.Update(_context.RepositoryOwner, _context.RepositoryName, created.Number, new MilestoneUpdate { Title = "New title" }); + + var result2 = await _milestonesClient.Get(_context.RepositoryOwner, _context.RepositoryName, created.Number); + Assert.Equal("New title", result2.Title); + } + + [IntegrationTest] + public async Task CanUpdateOneMilestoneWithRepositoryId() + { + var newMilestone = new NewMilestone("a milestone") { DueOn = DateTime.Now }; + var created = await _milestonesClient.Create(_context.Repository.Id, newMilestone); + + var result1 = await _milestonesClient.Get(_context.Repository.Id, created.Number); + Assert.Equal("a milestone", result1.Title); + + await _milestonesClient.Update(_context.Repository.Id, created.Number, new MilestoneUpdate {Title = "New title"}); + + var result2 = await _milestonesClient.Get(_context.Repository.Id, created.Number); + Assert.Equal("New title", result2.Title); + } + [IntegrationTest] public async Task CanListEmptyMilestones() { @@ -41,6 +111,14 @@ public class MilestonesClientTests : IDisposable Assert.Empty(milestones); } + [IntegrationTest] + public async Task CanListEmptyMilestonesWithRepositoryId() + { + var milestones = await _milestonesClient.GetAllForRepository(_context.Repository.Id); + + Assert.Empty(milestones); + } + [IntegrationTest] public async Task CanListMilestonesWithDefaultSortByDueDateAsc() { @@ -52,6 +130,24 @@ public class MilestonesClientTests : IDisposable await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3); var milestones = await _milestonesClient.GetAllForRepository(_context.RepositoryOwner, _context.RepositoryName); + + Assert.Equal(2, milestones.Count); + Assert.Equal("milestone 1", milestones[0].Title); + Assert.Equal("milestone 2", milestones[1].Title); + } + + [IntegrationTest] + public async Task CanListMilestonesWithDefaultSortByDueDateAscWithRepositoryId() + { + var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now }; + var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1) }; + var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3), State = ItemState.Closed }; + await _milestonesClient.Create(_context.Repository.Id, milestone1); + await _milestonesClient.Create(_context.Repository.Id, milestone2); + await _milestonesClient.Create(_context.Repository.Id, milestone3); + + var milestones = await _milestonesClient.GetAllForRepository(_context.Repository.Id); + Assert.Equal(2, milestones.Count); Assert.Equal("milestone 1", milestones[0].Title); Assert.Equal("milestone 2", milestones[1].Title); @@ -69,6 +165,25 @@ public class MilestonesClientTests : IDisposable var milestones = await _milestonesClient.GetAllForRepository(_context.RepositoryOwner, _context.RepositoryName, new MilestoneRequest { SortDirection = SortDirection.Descending }); + + Assert.Equal(2, milestones.Count); + Assert.Equal("milestone 2", milestones[0].Title); + Assert.Equal("milestone 1", milestones[1].Title); + } + + [IntegrationTest] + public async Task CanListMilestonesWithSortByDueDateDescWithRepositoryId() + { + var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now }; + var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1) }; + var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3), State = ItemState.Closed }; + await _milestonesClient.Create(_context.Repository.Id, milestone1); + await _milestonesClient.Create(_context.Repository.Id, milestone2); + await _milestonesClient.Create(_context.Repository.Id, milestone3); + + var milestones = await _milestonesClient.GetAllForRepository(_context.Repository.Id, + new MilestoneRequest { SortDirection = SortDirection.Descending }); + Assert.Equal(2, milestones.Count); Assert.Equal("milestone 2", milestones[0].Title); Assert.Equal("milestone 1", milestones[1].Title); @@ -92,22 +207,20 @@ public class MilestonesClientTests : IDisposable } [IntegrationTest] - public async Task CanRetrieveClosedIssues() + public async Task CanListClosedMilestonesWithRepositoryId() { - var newIssue = new NewIssue("A test issue") { Body = "A new unassigned issue" }; - var issue1 = await _github.Issue.Create(_context.RepositoryOwner, _context.RepositoryName, newIssue); - var issue2 = await _github.Issue.Create(_context.RepositoryOwner, _context.RepositoryName, newIssue); - await _github.Issue.Update(_context.RepositoryOwner, _context.RepositoryName, issue1.Number, - new IssueUpdate { State = ItemState.Closed }); - await _github.Issue.Update(_context.RepositoryOwner, _context.RepositoryName, issue2.Number, - new IssueUpdate { State = ItemState.Closed }); + var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now }; + var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1) }; + var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3), State = ItemState.Closed }; + await _milestonesClient.Create(_context.Repository.Id, milestone1); + await _milestonesClient.Create(_context.Repository.Id, milestone2); + await _milestonesClient.Create(_context.Repository.Id, milestone3); - var retrieved = await _github.Issue.GetAllForRepository(_context.RepositoryOwner, _context.RepositoryName, - new RepositoryIssueRequest { State = ItemStateFilter.Closed }); + var milestones = await _milestonesClient.GetAllForRepository(_context.Repository.Id, + new MilestoneRequest { State = ItemStateFilter.Closed }); - Assert.True(retrieved.Count >= 2); - Assert.True(retrieved.Any(i => i.Number == issue1.Number)); - Assert.True(retrieved.Any(i => i.Number == issue2.Number)); + Assert.Equal(1, milestones.Count); + Assert.Equal("milestone 3", milestones[0].Title); } [IntegrationTest] @@ -131,6 +244,27 @@ public class MilestonesClientTests : IDisposable Assert.Equal(3, milestones.Count); } + [IntegrationTest] + public async Task ReturnsCorrectCountOfMilestonesWithoutStartWithRepositoryId() + { + var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now }; + var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1) }; + var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3) }; + await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone1); + await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone2); + await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3); + + var options = new ApiOptions + { + PageSize = 3, + PageCount = 1 + }; + + var milestones = await _milestonesClient.GetAllForRepository(_context.Repository.Id, options); + + Assert.Equal(3, milestones.Count); + } + [IntegrationTest] public async Task ReturnsCorrectCountOfMilestonesWithStart() { @@ -153,6 +287,28 @@ public class MilestonesClientTests : IDisposable Assert.Equal(1, milestones.Count); } + [IntegrationTest] + public async Task ReturnsCorrectCountOfMilestonesWithStartWithRepositoryId() + { + var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now }; + var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1) }; + var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3) }; + await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone1); + await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone2); + await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3); + + var options = new ApiOptions + { + PageSize = 2, + PageCount = 1, + StartPage = 2 + }; + + var milestones = await _milestonesClient.GetAllForRepository(_context.Repository.Id, options); + + Assert.Equal(1, milestones.Count); + } + [IntegrationTest] public async Task ReturnsDistinctResultsBasedOnStartPage() { @@ -183,6 +339,36 @@ public class MilestonesClientTests : IDisposable Assert.NotEqual(firstPage[0].Number, secondPage[0].Number); } + [IntegrationTest] + public async Task ReturnsDistinctResultsBasedOnStartPageWithRepositoryId() + { + var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now }; + var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1) }; + var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3), State = ItemState.Closed }; + await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone1); + await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone2); + await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3); + + var startOptions = new ApiOptions + { + PageSize = 1, + PageCount = 1 + }; + + var firstPage = await _milestonesClient.GetAllForRepository(_context.Repository.Id, startOptions); + + var skipStartOptions = new ApiOptions + { + PageSize = 1, + PageCount = 1, + StartPage = 2 + }; + + var secondPage = await _milestonesClient.GetAllForRepository(_context.Repository.Id, skipStartOptions); + + Assert.NotEqual(firstPage[0].Number, secondPage[0].Number); + } + [IntegrationTest] public async Task ReturnsCorrectCountOfMilestonesWithoutStartParametrized() { @@ -206,6 +392,29 @@ public class MilestonesClientTests : IDisposable Assert.Equal(3, milestones.Count); } + [IntegrationTest] + public async Task ReturnsCorrectCountOfMilestonesWithoutStartParametrizedWithRepositoryId() + { + var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now }; + var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1), State = ItemState.Closed }; + var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3), State = ItemState.Closed }; + var milestone4 = new NewMilestone("milestone 4") { DueOn = DateTime.Now.AddDays(4), State = ItemState.Closed }; + await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone1); + await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone2); + await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3); + await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone4); + + var options = new ApiOptions + { + PageSize = 3, + PageCount = 1 + }; + + var milestones = await _milestonesClient.GetAllForRepository(_context.Repository.Id, new MilestoneRequest { State = ItemStateFilter.Closed }, options); + + Assert.Equal(3, milestones.Count); + } + [IntegrationTest] public async Task ReturnsCorrectCountOfMilestonesWithStartParametrized() { @@ -230,6 +439,30 @@ public class MilestonesClientTests : IDisposable Assert.Equal(1, milestones.Count); } + [IntegrationTest] + public async Task ReturnsCorrectCountOfMilestonesWithStartParametrizedWithRepositoryId() + { + var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now }; + var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1), State = ItemState.Closed }; + var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3), State = ItemState.Closed }; + var milestone4 = new NewMilestone("milestone 4") { DueOn = DateTime.Now.AddDays(4), State = ItemState.Closed }; + await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone1); + await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone2); + await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3); + await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone4); + + var options = new ApiOptions + { + PageSize = 2, + PageCount = 1, + StartPage = 2 + }; + + var milestones = await _milestonesClient.GetAllForRepository(_context.Repository.Id, new MilestoneRequest { State = ItemStateFilter.Closed }, options); + + Assert.Equal(1, milestones.Count); + } + [IntegrationTest] public async Task ReturnsDistinctResultsBasedOnStartPageParametrized() { @@ -262,6 +495,38 @@ public class MilestonesClientTests : IDisposable Assert.NotEqual(firstPage[0].Number, secondPage[0].Number); } + [IntegrationTest] + public async Task ReturnsDistinctResultsBasedOnStartPageParametrizedWithRepositoryId() + { + var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now }; + var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1), State = ItemState.Closed }; + var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3), State = ItemState.Closed }; + await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone1); + await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone2); + await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3); + + var milestoneRequest = new MilestoneRequest { State = ItemStateFilter.Closed }; + + var startOptions = new ApiOptions + { + PageSize = 1, + PageCount = 1 + }; + + var firstPage = await _milestonesClient.GetAllForRepository(_context.Repository.Id, milestoneRequest, startOptions); + + var skipStartOptions = new ApiOptions + { + PageSize = 1, + PageCount = 1, + StartPage = 2 + }; + + var secondPage = await _milestonesClient.GetAllForRepository(_context.Repository.Id, milestoneRequest, skipStartOptions); + + Assert.NotEqual(firstPage[0].Number, secondPage[0].Number); + } + public void Dispose() { _context.Dispose();