diff --git a/Octokit.Tests.Integration/Clients/IssueTimelineClientTests.cs b/Octokit.Tests.Integration/Clients/IssueTimelineClientTests.cs index c19148f0..f7576fcf 100644 --- a/Octokit.Tests.Integration/Clients/IssueTimelineClientTests.cs +++ b/Octokit.Tests.Integration/Clients/IssueTimelineClientTests.cs @@ -26,24 +26,15 @@ namespace Octokit.Tests.Integration.Clients [IntegrationTest] public async Task CanRetrieveTimelineForIssue() { - var newIssue = new NewIssue("a test issue") { Body = "A new unassigned issue" }; - var issue = await _issuesClient.Create(_context.RepositoryOwner, _context.RepositoryName, newIssue); - - var timelineEventInfos = await _issueTimelineClient.GetAllForIssue(_context.RepositoryOwner, _context.RepositoryName, issue.Number); - Assert.Empty(timelineEventInfos); - - var closed = await _issuesClient.Update(_context.RepositoryOwner, _context.RepositoryName, issue.Number, new IssueUpdate() { State = ItemState.Closed }); - Assert.NotNull(closed); - - timelineEventInfos = await _issueTimelineClient.GetAllForIssue(_context.RepositoryOwner, _context.RepositoryName, issue.Number); - Assert.Equal(1, timelineEventInfos.Count); - Assert.Equal(EventInfoState.Closed, timelineEventInfos[0].Event); + var timelineEventInfos = await _issueTimelineClient.GetAllForIssue("octokit", "octokit.net", 1503); + Assert.NotEmpty(timelineEventInfos); + Assert.NotEqual(0, timelineEventInfos.Count); } [IntegrationTest] public async Task CanRetrieveTimelineForIssueWithApiOptions() { - var timelineEventInfos = await _issueTimelineClient.GetAllForIssue("octokit", "octokit.net", 1115); + var timelineEventInfos = await _issueTimelineClient.GetAllForIssue("octokit", "octokit.net", 1503); Assert.NotEmpty(timelineEventInfos); Assert.NotEqual(1, timelineEventInfos.Count); @@ -54,11 +45,47 @@ namespace Octokit.Tests.Integration.Clients StartPage = 1 }; - timelineEventInfos = await _issueTimelineClient.GetAllForIssue("octokit", "octokit.net", 1115, pageOptions); + timelineEventInfos = await _issueTimelineClient.GetAllForIssue("octokit", "octokit.net", 1503, pageOptions); Assert.NotEmpty(timelineEventInfos); Assert.Equal(1, timelineEventInfos.Count); } + [IntegrationTest] + public async Task CanRetrieveTimelineForRecentIssues() + { + // Make sure we can deserialize the event timeline for recent closed PRs and open Issues in a heavy activity repository (microsoft/vscode) + + // Search request + var github = Helper.GetAuthenticatedClient(); + var search = new SearchIssuesRequest + { + PerPage = 20, + Page = 1 + }; + search.Repos.Add("microsoft", "vscode"); + + // 20 most recent closed PRs + search.Type = IssueTypeQualifier.PullRequest; + search.State = ItemState.Closed; + var pullRequestResults = await github.Search.SearchIssues(search); + foreach (var pullRequest in pullRequestResults.Items) + { + var timelineEventInfos = await _issueTimelineClient.GetAllForIssue("microsoft", "vscode", pullRequest.Number); + Assert.NotEmpty(timelineEventInfos); + } + + // 20 most recent open Issues + search.Type = IssueTypeQualifier.Issue; + search.State = ItemState.Open; + var issueResults = await github.Search.SearchIssues(search); + foreach (var issue in issueResults.Items) + { + var timelineEventInfos = await _issueTimelineClient.GetAllForIssue("microsoft", "vscode", issue.Number); + + Assert.NotEmpty(timelineEventInfos); + } + } + [IntegrationTest] public async Task CanDeserializeRenameEvent() { diff --git a/Octokit.Tests.Integration/Reactive/ObservableIssueTimelineClientTests.cs b/Octokit.Tests.Integration/Reactive/ObservableIssueTimelineClientTests.cs index 2608591b..ffad9fa5 100644 --- a/Octokit.Tests.Integration/Reactive/ObservableIssueTimelineClientTests.cs +++ b/Octokit.Tests.Integration/Reactive/ObservableIssueTimelineClientTests.cs @@ -24,28 +24,16 @@ namespace Octokit.Tests.Integration.Reactive [IntegrationTest] public async Task CanRetrieveTimelineForIssue() { - var newIssue = new NewIssue("a test issue") { Body = "A new unassigned issue" }; - var observable = _client.Issue.Create(_context.Repository.Id, newIssue); - var issue = await observable; - - var observableTimeline = _client.Issue.Timeline.GetAllForIssue(_context.RepositoryOwner, _context.RepositoryName, issue.Number); + var observableTimeline = _client.Issue.Timeline.GetAllForIssue("octokit", "octokit.net", 1503); var timelineEventInfos = await observableTimeline.ToList(); - Assert.Empty(timelineEventInfos); - - observable = _client.Issue.Update(_context.Repository.Id, issue.Number, new IssueUpdate { State = ItemState.Closed }); - var closed = await observable; - Assert.NotNull(closed); - - observableTimeline = _client.Issue.Timeline.GetAllForIssue(_context.RepositoryOwner, _context.RepositoryName, issue.Number); - timelineEventInfos = await observableTimeline.ToList(); - Assert.Equal(1, timelineEventInfos.Count); - Assert.Equal(EventInfoState.Closed, timelineEventInfos[0].Event); + Assert.NotEmpty(timelineEventInfos); + Assert.NotEqual(0, timelineEventInfos.Count); } [IntegrationTest] public async Task CanRetrieveTimelineForIssueWithApiOptions() { - var observableTimeline = _client.Issue.Timeline.GetAllForIssue("octokit", "octokit.net", 1115); + var observableTimeline = _client.Issue.Timeline.GetAllForIssue("octokit", "octokit.net", 1503); var timelineEventInfos = await observableTimeline.ToList(); Assert.NotEmpty(timelineEventInfos); Assert.NotEqual(1, timelineEventInfos.Count); @@ -56,7 +44,7 @@ namespace Octokit.Tests.Integration.Reactive PageCount = 1, StartPage = 1 }; - observableTimeline = _client.Issue.Timeline.GetAllForIssue("octokit", "octokit.net", 1115, pageOptions); + observableTimeline = _client.Issue.Timeline.GetAllForIssue("octokit", "octokit.net", 1503, pageOptions); timelineEventInfos = await observableTimeline.ToList(); Assert.NotEmpty(timelineEventInfos); Assert.Equal(1, timelineEventInfos.Count); diff --git a/Octokit/Models/Response/EventInfo.cs b/Octokit/Models/Response/EventInfo.cs index 34239a7c..cda75079 100644 --- a/Octokit/Models/Response/EventInfo.cs +++ b/Octokit/Models/Response/EventInfo.cs @@ -204,6 +204,21 @@ namespace Octokit /// url of the reference's source. /// [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Crossreferenced")] - Crossreferenced + Crossreferenced, + + /// + /// The issue was reveiewed. + /// + Reviewed, + + /// + /// A line comment was made. + /// + LineCommented, + + /// + /// A commit comment was made. + /// + CommitCommented } }