]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-4764 Add method to get existing profile that match provided profiles for a...
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Thu, 24 Apr 2014 16:02:12 +0000 (18:02 +0200)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Thu, 24 Apr 2014 16:02:19 +0000 (18:02 +0200)
sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileBackup.java
sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfileBackupTest.java
sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfilesMediumTest.java

index c00e297cc86047079f6a229928f64051cb2a9d5e..93f2afe8a17cc7bd4f55992e39ecd0ea3ea2e1cf 100644 (file)
@@ -131,10 +131,10 @@ public class QProfileBackup implements ServerComponent {
   }
 
   /**
-   * Restore default profile for a given language.
+   * Restore provided profile for a given language.
    * If a profile with same name than default profile already exists, an exception will be thrown.
    */
-  public QProfileResult restoreDefaultProfilesFromLanguage(String language) {
+  public QProfileResult restoreProvidedProfilesFromLanguage(String language) {
     checkPermission(UserSession.get());
     QProfileResult result = new QProfileResult();
 
@@ -187,6 +187,21 @@ public class QProfileBackup implements ServerComponent {
     }
   }
 
+  /**
+   * Return the list of existing profiles that match the provided ones for a given language
+   */
+  public List<QProfile> findProvidedProfilesByLanguage(String language) {
+    List<QProfile> profiles = newArrayList();
+    ListMultimap<String, RulesProfile> profilesByName = profilesByName(language, new QProfileResult());
+    for (RulesProfile rulesProfile : profilesByName.values()) {
+      QProfile profile = qProfileLookup.profile(rulesProfile.getName(), language);
+      if (profile != null) {
+        profiles.add(profile);
+      }
+    }
+    return profiles;
+  }
+
   private void checkProfileDoesNotExists(RulesProfile importedProfile, boolean deleteExisting, DatabaseSession hibernateSession) {
     RulesProfile existingProfile = hibernateSession.getSingleResult(RulesProfile.class, "name", importedProfile.getName(), "language", importedProfile.getLanguage());
     if (existingProfile != null && !deleteExisting) {
index 725674ba53b0fbdc152d379e4398df679b35ae1b..dec4f775dd4a87ce3ac8913fb8a7b8ffd942b10f 100644 (file)
@@ -297,7 +297,7 @@ public class QProfileBackupTest {
   }
 
   @Test
-  public void restore_default_profiles_from_language() throws Exception {
+  public void restore_provided_profiles_from_language() throws Exception {
     String name = "Default";
     String language = "java";
 
@@ -314,7 +314,7 @@ public class QProfileBackupTest {
 
     when(qProfileOperations.newProfile(eq(name), eq(language), eq(true), any(UserSession.class), eq(session))).thenReturn(new QProfile().setId(1));
 
-    backup.restoreDefaultProfilesFromLanguage(language);
+    backup.restoreProvidedProfilesFromLanguage(language);
 
     verify(qProfileActiveRuleOperations).createActiveRule(eq(1), eq(RuleKey.of("pmd", "rule")), eq("BLOCKER"), eq(session));
     verify(qProfileActiveRuleOperations).updateActiveRuleParam(any(ActiveRuleDto.class), eq("max"), eq("10"), eq(session));
@@ -326,7 +326,7 @@ public class QProfileBackupTest {
   }
 
   @Test
-  public void restore_default_profiles_from_language_with_multiple_profiles_with_same_name_and_same_language() throws Exception {
+  public void restore_provided_profiles_from_language_with_multiple_profiles_with_same_name_and_same_language() throws Exception {
     RulesProfile profile1 = RulesProfile.create("Default", "java");
     profile1.activateRule(Rule.create("pmd", "rule").setSeverity(RulePriority.BLOCKER), null);
     ProfileDefinition profileDefinition1 = mock(ProfileDefinition.class);
@@ -341,7 +341,7 @@ public class QProfileBackupTest {
 
     when(qProfileOperations.newProfile(eq("Default"), eq("java"), eq(true), any(UserSession.class), eq(session))).thenReturn(new QProfile().setId(1));
 
-    backup.restoreDefaultProfilesFromLanguage("java");
+    backup.restoreProvidedProfilesFromLanguage("java");
 
     verify(qProfileActiveRuleOperations).createActiveRule(eq(1), eq(RuleKey.of("pmd", "rule")), eq("BLOCKER"), eq(session));
     verify(qProfileActiveRuleOperations).createActiveRule(eq(1), eq(RuleKey.of("checkstyle", "rule")), eq("MAJOR"), eq(session));
@@ -353,19 +353,37 @@ public class QProfileBackupTest {
   }
 
   @Test
-  public void not_restore_default_profiles_from_another_language() throws Exception {
+  public void not_restore_provided_profiles_from_another_language() throws Exception {
     RulesProfile profile = RulesProfile.create("Default", "java");
     profile.activateRule(Rule.create("pmd", "rule").setSeverity(RulePriority.BLOCKER), null);
     ProfileDefinition profileDefinition = mock(ProfileDefinition.class);
     when(profileDefinition.createProfile(any(ValidationMessages.class))).thenReturn(profile);
-
     definitions.add(profileDefinition);
 
-    backup.restoreDefaultProfilesFromLanguage("js");
+    backup.restoreProvidedProfilesFromLanguage("js");
 
     verifyZeroInteractions(qProfileOperations);
     verifyZeroInteractions(qProfileActiveRuleOperations);
 
     verifyZeroInteractions(esActiveRule);
   }
+
+  @Test
+  public void find_provided_profiles_by_language() throws Exception {
+    RulesProfile rulesProfile1 = RulesProfile.create("Basic", "java");
+    ProfileDefinition profileDefinition1 = mock(ProfileDefinition.class);
+    when(profileDefinition1.createProfile(any(ValidationMessages.class))).thenReturn(rulesProfile1);
+    definitions.add(profileDefinition1);
+
+    RulesProfile rulesProfile2 = RulesProfile.create("Default", "java");
+    ProfileDefinition profileDefinition2 = mock(ProfileDefinition.class);
+    when(profileDefinition2.createProfile(any(ValidationMessages.class))).thenReturn(rulesProfile2);
+    definitions.add(profileDefinition2);
+
+    // Only basic profile is existing
+    when(qProfileLookup.profile("Basic", "java")).thenReturn(new QProfile().setId(1));
+
+    List<QProfile> result = backup.findProvidedProfilesByLanguage("java");
+    assertThat(result).hasSize(1);
+  }
 }
index 941c585906878da96739388bef5abd0e62613719..26830e2e1f655762c85d60e4d9e41703aab2c6df 100644 (file)
@@ -73,7 +73,7 @@ public class QProfilesMediumTest {
   }
 
   @Test
-  public void restore_default_profile_from_language() throws Exception {
+  public void restore_provided_profile_from_language() throws Exception {
     MockUserSession.set().setLogin("julien").setName("Julien").setGlobalPermissions(GlobalPermissions.QUALITY_PROFILE_ADMIN);
 
     QProfiles qProfiles = serverTester.get(QProfiles.class);
@@ -91,11 +91,15 @@ public class QProfilesMediumTest {
     Rule rule2 = rules.find(RuleQuery.builder().searchQuery("x2").build()).results().iterator().next();
     qProfiles.deactivateRule(qProfiles.profile("Basic", "xoo").id(), rule2.id());
 
+    assertThat(qProfileBackup.findProvidedProfilesByLanguage("xoo")).hasSize(1);
+
     // Renamed profile
     qProfiles.renameProfile(profile.id(), "Old Basic");
 
+    assertThat(qProfileBackup.findProvidedProfilesByLanguage("xoo")).isEmpty();
+
     // Restore default profiles of xoo
-    qProfileBackup.restoreDefaultProfilesFromLanguage("xoo");
+    qProfileBackup.restoreProvidedProfilesFromLanguage("xoo");
 
     // Reload profile
     profile = qProfiles.profile("Basic", "xoo");