diff --git a/src/main/java/io/spring/issuebot/feedback/FeedbackConfiguration.java b/src/main/java/io/spring/issuebot/feedback/FeedbackConfiguration.java index d50aafa..e3a3689 100644 --- a/src/main/java/io/spring/issuebot/feedback/FeedbackConfiguration.java +++ b/src/main/java/io/spring/issuebot/feedback/FeedbackConfiguration.java @@ -38,6 +38,7 @@ class FeedbackConfiguration { GitHubProperties githubProperties, FeedbackProperties feedbackProperties) { return new FeedbackIssueListener(gitHub, feedbackProperties.getRequiredLabel(), githubProperties.getRepository().getCollaborators(), + githubProperties.getCredentials().getUsername(), new StandardFeedbackListener(gitHub, feedbackProperties.getProvidedLabel(), feedbackProperties.getRequiredLabel(), diff --git a/src/main/java/io/spring/issuebot/feedback/FeedbackIssueListener.java b/src/main/java/io/spring/issuebot/feedback/FeedbackIssueListener.java index 0118e87..edec128 100644 --- a/src/main/java/io/spring/issuebot/feedback/FeedbackIssueListener.java +++ b/src/main/java/io/spring/issuebot/feedback/FeedbackIssueListener.java @@ -17,6 +17,7 @@ package io.spring.issuebot.feedback; import java.time.OffsetDateTime; +import java.util.ArrayList; import java.util.List; import io.spring.issuebot.IssueListener; @@ -43,10 +44,12 @@ final class FeedbackIssueListener implements IssueListener { private final FeedbackListener feedbackListener; FeedbackIssueListener(GitHubOperations gitHub, String labelName, - List collaborators, FeedbackListener feedbackListener) { + List collaborators, String username, + FeedbackListener feedbackListener) { this.gitHub = gitHub; this.labelName = labelName; - this.collaborators = collaborators; + this.collaborators = new ArrayList<>(collaborators); + this.collaborators.add(username); this.feedbackListener = feedbackListener; } diff --git a/src/test/java/io/spring/issuebot/feedback/FeedbackIssueListenerTests.java b/src/test/java/io/spring/issuebot/feedback/FeedbackIssueListenerTests.java index b59c216..01a1b61 100644 --- a/src/test/java/io/spring/issuebot/feedback/FeedbackIssueListenerTests.java +++ b/src/test/java/io/spring/issuebot/feedback/FeedbackIssueListenerTests.java @@ -48,7 +48,7 @@ public class FeedbackIssueListenerTests { private final FeedbackListener feedbackListener = mock(FeedbackListener.class); private final IssueListener listener = new FeedbackIssueListener(this.gitHub, - "required", Arrays.asList("Amy", "Brian"), this.feedbackListener); + "required", Arrays.asList("Amy", "Brian"), "IssueBot", this.feedbackListener); @Test public void pullRequestsAreIgnored() { @@ -123,6 +123,21 @@ public class FeedbackIssueListenerTests { verify(this.feedbackListener).feedbackRequired(issue, requestTime); } + @Test + public void feedbackRequiredAfterCommentFromIssueBot() { + Issue issue = new Issue(null, null, null, null, null, + Arrays.asList(new Label("required")), null, null); + OffsetDateTime requestTime = OffsetDateTime.now().minusDays(1); + given(this.gitHub.getEvents(issue)).willReturn(new StandardPage<>( + Arrays.asList(new Event("labeled", requestTime, new Label("required"))), + () -> null)); + given(this.gitHub.getComments(issue)).willReturn(new StandardPage<>( + Arrays.asList(new Comment(new User("IssueBot"), OffsetDateTime.now())), + () -> null)); + this.listener.onOpenIssue(issue); + verify(this.feedbackListener).feedbackRequired(issue, requestTime); + } + @Test public void issueWithNoMatchingLabeledEventIsIgnored() { Issue issue = new Issue(null, null, null, null, null,