}
/**
- * 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();
}
}
+ /**
+ * 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) {
}
@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";
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));
}
@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);
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));
}
@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);
+ }
}
}
@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);
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");