From e467a2c0cae5adef17e3c627d78cfb5d75f6ab05 Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Thu, 12 Dec 2013 11:57:59 +0100 Subject: [PATCH] SONAR-4535 move searchProfile to QProfileSearch --- .../org/sonar/server/platform/Platform.java | 2 + .../server/qualityprofile/QProfileSearch.java | 25 +++++++ .../server/qualityprofile/QProfiles.java | 20 ++---- .../app/controllers/profiles_controller.rb | 1 - .../qualityprofile/QProfileSearchTest.java | 68 +++++++++++++++++++ .../server/qualityprofile/QProfilesTest.java | 26 ++----- 6 files changed, 105 insertions(+), 37 deletions(-) create mode 100644 sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfileSearchTest.java diff --git a/sonar-server/src/main/java/org/sonar/server/platform/Platform.java b/sonar-server/src/main/java/org/sonar/server/platform/Platform.java index 3924553b385..1c6017766e2 100644 --- a/sonar-server/src/main/java/org/sonar/server/platform/Platform.java +++ b/sonar-server/src/main/java/org/sonar/server/platform/Platform.java @@ -90,6 +90,7 @@ import org.sonar.server.permission.InternalPermissionService; import org.sonar.server.permission.InternalPermissionTemplateService; import org.sonar.server.permission.PermissionFinder; import org.sonar.server.plugins.*; +import org.sonar.server.qualityprofile.QProfileSearch; import org.sonar.server.qualityprofile.QProfiles; import org.sonar.server.qualityprofile.RubyQProfilesService; import org.sonar.server.rule.RubyRuleService; @@ -269,6 +270,7 @@ public final class Platform { // quality profiles servicesContainer.addSingleton(QProfiles.class); + servicesContainer.addSingleton(QProfileSearch.class); servicesContainer.addSingleton(RubyQProfilesService.class); // users diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileSearch.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileSearch.java index 1436019432f..fba6a15fecf 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileSearch.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileSearch.java @@ -20,7 +20,32 @@ package org.sonar.server.qualityprofile; +import com.google.common.base.Function; +import com.google.common.collect.Iterables; import org.sonar.api.ServerComponent; +import org.sonar.core.qualityprofile.db.QualityProfileDao; +import org.sonar.core.qualityprofile.db.QualityProfileDto; + +import java.util.List; + +import static com.google.common.collect.Lists.newArrayList; public class QProfileSearch implements ServerComponent { + + private final QualityProfileDao dao; + + public QProfileSearch(QualityProfileDao dao) { + this.dao = dao; + } + + public List searchProfiles() { + List dtos = dao.selectAll(); + return newArrayList(Iterables.transform(dtos, new Function() { + @Override + public QProfile apply(QualityProfileDto input) { + return QProfile.from(input); + } + })); + } + } diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfiles.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfiles.java index 96d70888b8b..829b648af97 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfiles.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfiles.java @@ -20,33 +20,21 @@ package org.sonar.server.qualityprofile; -import com.google.common.base.Function; -import com.google.common.collect.Iterables; import org.sonar.api.ServerComponent; import org.sonar.api.rule.RuleKey; -import org.sonar.core.qualityprofile.db.QualityProfileDao; -import org.sonar.core.qualityprofile.db.QualityProfileDto; import java.util.List; -import static com.google.common.collect.Lists.newArrayList; - public class QProfiles implements ServerComponent { - private final QualityProfileDao dao; + private final QProfileSearch search; - public QProfiles(QualityProfileDao dao) { - this.dao = dao; + public QProfiles(QProfileSearch search) { + this.search = search; } public List searchProfiles() { - List dtos = dao.selectAll(); - return newArrayList(Iterables.transform(dtos, new Function() { - @Override - public QProfile apply(QualityProfileDto input) { - return QProfile.from(input); - } - })); + return search.searchProfiles(); } public void searchProfile(QProfileKey profile) { diff --git a/sonar-server/src/main/webapp/WEB-INF/app/controllers/profiles_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/profiles_controller.rb index a6ddadabd55..e2393b4dfd4 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/profiles_controller.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/profiles_controller.rb @@ -28,7 +28,6 @@ class ProfilesController < ApplicationController # GET /profiles/index def index add_breadcrumbs ProfilesController::root_breadcrumb - #@profiles = Internal.qprofiles.searchProfiles() @profiles = Profile.all Api::Utils.insensitive_sort!(@profiles){|profile| profile.name} end diff --git a/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfileSearchTest.java b/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfileSearchTest.java new file mode 100644 index 00000000000..1a5c2c4c7a1 --- /dev/null +++ b/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfileSearchTest.java @@ -0,0 +1,68 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2013 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +package org.sonar.server.qualityprofile; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; +import org.sonar.core.qualityprofile.db.QualityProfileDao; +import org.sonar.core.qualityprofile.db.QualityProfileDto; + +import java.util.List; + +import static com.google.common.collect.Lists.newArrayList; +import static org.fest.assertions.Assertions.assertThat; +import static org.mockito.Mockito.when; + +@RunWith(MockitoJUnitRunner.class) +public class QProfileSearchTest { + + @Mock + QualityProfileDao dao; + + QProfileSearch search; + + @Before + public void setUp() throws Exception { + search = new QProfileSearch(dao); + } + + @Test + public void search_profiles() throws Exception { + when(dao.selectAll()).thenReturn(newArrayList( + new QualityProfileDto().setId(1).setName("Sonar Way with Findbugs").setLanguage("java").setParent("Sonar Way").setVersion(1).setUsed(false) + )); + + List result = search.searchProfiles(); + assertThat(result).hasSize(1); + + QProfile qProfile = result.get(0); + assertThat(qProfile.id()).isEqualTo(1); + assertThat(qProfile.name()).isEqualTo("Sonar Way with Findbugs"); + assertThat(qProfile.language()).isEqualTo("java"); + assertThat(qProfile.key()).isEqualTo(QProfileKey.of("Sonar Way with Findbugs", "java")); + assertThat(qProfile.parent()).isEqualTo("Sonar Way"); + assertThat(qProfile.version()).isEqualTo(1); + assertThat(qProfile.used()).isFalse(); + } +} diff --git a/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfilesTest.java b/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfilesTest.java index 45365a35c4c..0000f971e36 100644 --- a/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfilesTest.java +++ b/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfilesTest.java @@ -25,10 +25,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; -import org.sonar.core.qualityprofile.db.QualityProfileDao; -import org.sonar.core.qualityprofile.db.QualityProfileDto; - -import java.util.List; import static com.google.common.collect.Lists.newArrayList; import static org.fest.assertions.Assertions.assertThat; @@ -38,32 +34,22 @@ import static org.mockito.Mockito.when; public class QProfilesTest { @Mock - QualityProfileDao dao; + QProfileSearch search; QProfiles qProfiles; @Before public void setUp() throws Exception { - qProfiles = new QProfiles(dao); + qProfiles = new QProfiles(search); } @Test public void search_profiles() throws Exception { - when(dao.selectAll()).thenReturn(newArrayList( - new QualityProfileDto().setId(1).setName("Sonar Way with Findbugs").setLanguage("java").setParent("Sonar Way").setVersion(1).setUsed(false) + when(qProfiles.searchProfiles()).thenReturn(newArrayList( + new QProfile().setId(1).setName("Sonar Way with Findbugs").setLanguage("java").setParent("Sonar Way").setVersion(1).setUsed(false) )); - List result = qProfiles.searchProfiles(); - assertThat(result).hasSize(1); - - QProfile qProfile = result.get(0); - assertThat(qProfile.id()).isEqualTo(1); - assertThat(qProfile.name()).isEqualTo("Sonar Way with Findbugs"); - assertThat(qProfile.language()).isEqualTo("java"); - assertThat(qProfile.key()).isEqualTo(QProfileKey.of("Sonar Way with Findbugs", "java")); - assertThat(qProfile.parent()).isEqualTo("Sonar Way"); - assertThat(qProfile.version()).isEqualTo(1); - assertThat(qProfile.used()).isFalse(); + assertThat(qProfiles.searchProfiles()).hasSize(1); } @Test(expected = UnsupportedOperationException.class) @@ -98,7 +84,7 @@ public class QProfilesTest { @Test(expected = UnsupportedOperationException.class) public void testExportProfile() throws Exception { - qProfiles.exportProfile(null, null); + qProfiles.exportProfile(QProfileKey.of("Default profile", "java")); } @Test(expected = UnsupportedOperationException.class) -- 2.39.5