From 6a467371687c571f016f9c9fe4e5fe7c0d2d8209 Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Fri, 28 Jun 2013 20:31:10 +0200 Subject: [PATCH] SONAR-4421 Update issues number limit from 100 to 500 that could be bulk changed --- .../java/org/sonar/api/issue/IssueQuery.java | 7 ++-- .../org/sonar/api/issue/IssueQueryTest.java | 4 +-- .../server/issue/IssueBulkChangeService.java | 3 +- .../issue/IssueBulkChangeServiceTest.java | 32 ++++++++++++++----- 4 files changed, 32 insertions(+), 14 deletions(-) diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/issue/IssueQuery.java b/sonar-plugin-api/src/main/java/org/sonar/api/issue/IssueQuery.java index 79e5aace148..b3fef00fa47 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/issue/IssueQuery.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/issue/IssueQuery.java @@ -27,7 +27,10 @@ import org.sonar.api.web.UserRole; import javax.annotation.CheckForNull; import javax.annotation.Nullable; -import java.util.*; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.Set; /** * @since 3.6 @@ -340,7 +343,7 @@ public class IssueQuery { initPageIndex(); initPageSize(); if (issueKeys != null) { - Preconditions.checkArgument(issueKeys.size() < MAX_ISSUE_KEYS, "Number of issue keys must be less than " + MAX_ISSUE_KEYS + " (got " + issueKeys.size() + ")"); + Preconditions.checkArgument(issueKeys.size() <= MAX_ISSUE_KEYS, "Number of issue keys must be less than " + MAX_ISSUE_KEYS + " (got " + issueKeys.size() + ")"); } return new IssueQuery(this); } diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/issue/IssueQueryTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/issue/IssueQueryTest.java index adac4a108bd..dc7c459e8f3 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/issue/IssueQueryTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/issue/IssueQueryTest.java @@ -199,7 +199,7 @@ public class IssueQueryTest { @Test public void number_of_issue_keys_should_be_limited() throws Exception { List issueKeys = newArrayList(); - for (int i=0; i issues = issueQueryResult.issues(); List bulkActions = newArrayList(); for (String actionName : issueBulkChangeQuery.actions()) { diff --git a/sonar-server/src/test/java/org/sonar/server/issue/IssueBulkChangeServiceTest.java b/sonar-server/src/test/java/org/sonar/server/issue/IssueBulkChangeServiceTest.java index 4626dc38a2b..afc79fa4902 100644 --- a/sonar-server/src/test/java/org/sonar/server/issue/IssueBulkChangeServiceTest.java +++ b/sonar-server/src/test/java/org/sonar/server/issue/IssueBulkChangeServiceTest.java @@ -22,13 +22,14 @@ package org.sonar.server.issue; import org.junit.Before; import org.junit.Test; +import org.mockito.ArgumentCaptor; import org.sonar.api.issue.Issue; import org.sonar.api.issue.IssueQuery; import org.sonar.api.issue.IssueQueryResult; import org.sonar.api.issue.internal.DefaultIssue; import org.sonar.api.issue.internal.IssueChangeContext; +import org.sonar.api.web.UserRole; import org.sonar.core.issue.IssueNotifications; -import org.sonar.core.issue.IssueUpdater; import org.sonar.core.issue.db.IssueStorage; import org.sonar.server.user.UserSession; @@ -46,7 +47,6 @@ import static org.mockito.Mockito.*; public class IssueBulkChangeServiceTest { private DefaultIssueFinder finder = mock(DefaultIssueFinder.class); - private IssueUpdater issueUpdater = mock(IssueUpdater.class); private IssueStorage issueStorage = mock(IssueStorage.class); private IssueNotifications issueNotifications = mock(IssueNotifications.class); @@ -91,13 +91,34 @@ public class IssueBulkChangeServiceTest { assertThat(result.issuesChanged()).hasSize(1); assertThat(result.issuesNotChanged()).isEmpty(); - verifyNoMoreInteractions(issueUpdater); verify(issueStorage).save(eq(issue)); verifyNoMoreInteractions(issueStorage); verify(issueNotifications).sendChanges(eq(issue), any(IssueChangeContext.class), eq(issueQueryResult)); verifyNoMoreInteractions(issueNotifications); } + @Test + public void should_load_issues_from_issue_keys_with_maximum_page_size() { + Map properties = newHashMap(); + properties.put("issues", "ABCD,DEFG"); + properties.put("actions", "assign"); + properties.put("assign.assignee", "fred"); + + when(action.supports(any(Issue.class))).thenReturn(true); + when(action.execute(anyMap(), any(IssueBulkChangeService.ActionContext.class))).thenReturn(true); + when(action.execute(eq(properties), any(IssueBulkChangeService.ActionContext.class))).thenReturn(true); + + IssueBulkChangeQuery issueBulkChangeQuery = new IssueBulkChangeQuery(properties); + service.execute(issueBulkChangeQuery, userSession); + + ArgumentCaptor captor = ArgumentCaptor.forClass(IssueQuery.class); + verify(finder).find(captor.capture()); + IssueQuery query = captor.getValue(); + assertThat(query.issueKeys()).containsOnly("ABCD", "DEFG"); + assertThat(query.pageSize()).isEqualTo(IssueQuery.MAX_PAGE_SIZE); + assertThat(query.requiredRole()).isEqualTo(UserRole.USER); + } + @Test public void should_not_execute_bulk_if_issue_does_not_support_action() { Map properties = newHashMap(); @@ -112,7 +133,6 @@ public class IssueBulkChangeServiceTest { assertThat(result.issuesChanged()).isEmpty(); assertThat(result.issuesNotChanged()).hasSize(1); - verifyZeroInteractions(issueUpdater); verifyZeroInteractions(issueStorage); verifyZeroInteractions(issueNotifications); } @@ -132,7 +152,6 @@ public class IssueBulkChangeServiceTest { assertThat(result.issuesChanged()).isEmpty(); assertThat(result.issuesNotChanged()).hasSize(1); - verifyZeroInteractions(issueUpdater); verifyZeroInteractions(issueStorage); verifyZeroInteractions(issueNotifications); } @@ -152,7 +171,6 @@ public class IssueBulkChangeServiceTest { assertThat(result.issuesChanged()).isEmpty(); assertThat(result.issuesNotChanged()).hasSize(1); - verifyZeroInteractions(issueUpdater); verifyZeroInteractions(issueStorage); verifyZeroInteractions(issueNotifications); } @@ -172,7 +190,6 @@ public class IssueBulkChangeServiceTest { } catch (Exception e) { assertThat(e).isInstanceOf(IllegalStateException.class).hasMessage("User is not logged in"); } - verifyZeroInteractions(issueUpdater); verifyZeroInteractions(issueStorage); verifyZeroInteractions(issueNotifications); } @@ -190,7 +207,6 @@ public class IssueBulkChangeServiceTest { } catch (Exception e) { assertThat(e).isInstanceOf(IllegalArgumentException.class).hasMessage("The action : 'unknown' is unknown"); } - verifyZeroInteractions(issueUpdater); verifyZeroInteractions(issueStorage); verifyZeroInteractions(issueNotifications); } -- 2.39.5