Remove feedback reminder label when feedback is provided

This commit is contained in:
Andy Wilkinson
2015-12-16 17:42:59 +00:00
parent bfd0941e6a
commit f383bbf0fb
2 changed files with 22 additions and 11 deletions

View File

@@ -56,6 +56,9 @@ final class StandardFeedbackListener implements FeedbackListener {
public void feedbackProvided(Issue issue) {
this.gitHub.addLabel(issue, this.providedLabel);
this.gitHub.removeLabel(issue, this.requiredLabel);
if (hasReminderLabel(issue)) {
this.gitHub.removeLabel(issue, this.reminderLabel);
}
}
@Override
@@ -64,7 +67,7 @@ final class StandardFeedbackListener implements FeedbackListener {
if (requestTime.plusDays(14).isBefore(now)) {
close(issue);
}
else if (requestTime.plusDays(7).isBefore(now) && reminderRequired(issue)) {
else if (requestTime.plusDays(7).isBefore(now) && !hasReminderLabel(issue)) {
remind(issue);
}
}
@@ -76,15 +79,15 @@ final class StandardFeedbackListener implements FeedbackListener {
this.gitHub.removeLabel(issue, this.reminderLabel);
}
private boolean reminderRequired(Issue issue) {
private boolean hasReminderLabel(Issue issue) {
if (issue.getLabels() != null) {
for (Label label : issue.getLabels()) {
if (this.reminderLabel.equals(label.getName())) {
return false;
return true;
}
}
}
return true;
return false;
}
private void remind(Issue issue) {

View File

@@ -17,8 +17,7 @@
package io.spring.issuebot.feedback;
import java.time.OffsetDateTime;
import java.util.Arrays;
import java.util.Collections;
import java.util.ArrayList;
import org.junit.Test;
@@ -43,14 +42,24 @@ public class StandardFeedbackListenerTests {
"feedback-provided", "feedback-required", "feedback-reminder",
"Please provide requested feedback", "Closing due to lack of feedback");
private final Issue issue = new Issue(null, null, null, null, null,
Collections.<Label>emptyList(), null, null);
private final Issue issue = new Issue(null, null, null, null, null, new ArrayList<>(),
null, null);
@Test
public void feedbackProvided() {
this.listener.feedbackProvided(this.issue);
verify(this.gitHub).addLabel(this.issue, "feedback-provided");
verify(this.gitHub).removeLabel(this.issue, "feedback-required");
verifyNoMoreInteractions(this.gitHub);
}
@Test
public void feedbackProvidedAfterReminder() {
this.issue.getLabels().add(new Label("feedback-reminder"));
this.listener.feedbackProvided(this.issue);
verify(this.gitHub).addLabel(this.issue, "feedback-provided");
verify(this.gitHub).removeLabel(this.issue, "feedback-required");
verify(this.gitHub).removeLabel(this.issue, "feedback-reminder");
}
@Test
@@ -68,9 +77,8 @@ public class StandardFeedbackListenerTests {
@Test
public void feedbackRequiredReminderDueAndAlreadyCommented() {
Issue issue = new Issue(null, null, null, null, null,
Arrays.asList(new Label("feedback-reminder")), null, null);
this.listener.feedbackRequired(issue, OffsetDateTime.now().minusDays(8));
this.issue.getLabels().add(new Label("feedback-reminder"));
this.listener.feedbackRequired(this.issue, OffsetDateTime.now().minusDays(8));
verifyNoMoreInteractions(this.gitHub);
}