]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-10262 Fix favorite flag when displaying the branch of a project
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Tue, 27 Mar 2018 14:43:57 +0000 (16:43 +0200)
committerJanos Gyerik <janos.gyerik@sonarsource.com>
Wed, 4 Apr 2018 12:40:50 +0000 (14:40 +0200)
server/sonar-server/src/main/java/org/sonar/server/ui/ws/ComponentAction.java
server/sonar-server/src/test/java/org/sonar/server/ui/ws/ComponentActionTest.java

index f0c22150fe76de452c855d2eea953fc6cd630cb4..6dfb2d4a919b9aa45c92f32d80d1ebb7a4782239 100644 (file)
@@ -180,12 +180,16 @@ public class ComponentAction implements NavigationWsAction {
   }
 
   private void writeComponent(JsonWriter json, DbSession session, ComponentDto component, OrganizationDto organizationDto, @Nullable SnapshotDto analysis) {
-    json.prop("key", component.getDbKey())
+    json.prop("key", component.getKey())
       .prop("organization", organizationDto.getKey())
       .prop("id", component.uuid())
       .prop("name", component.name())
       .prop("description", component.description())
       .prop("isFavorite", isFavourite(session, component));
+    String branch = component.getBranch();
+    if (branch != null) {
+      json.prop("branch", branch);
+    }
     if (QUALIFIERS_WITH_VISIBILITY.contains(component.qualifier())) {
       json.prop("visibility", Visibility.getLabel(component.isPrivate()));
     }
index 3929f444c5aa1aad8ee381d5c7b5f9778d1baf25..91cf01b13a809b0e9c88adcaf90d07b93c7411da 100644 (file)
@@ -87,19 +87,17 @@ public class ComponentActionTest {
   @Rule
   public ExpectedException expectedException = ExpectedException.none();
   @Rule
-  public DbTester dbTester = DbTester.create(System2.INSTANCE);
+  public DbTester db = DbTester.create(System2.INSTANCE);
   @Rule
   public UserSessionRule userSession = UserSessionRule.standalone();
 
-  private DbClient dbClient = dbTester.getDbClient();
-  private ComponentDbTester componentDbTester = dbTester.components();
-  private PropertyDbTester propertyDbTester = new PropertyDbTester(dbTester);
+  private DbClient dbClient = db.getDbClient();
+  private ComponentDbTester componentDbTester = db.components();
+  private PropertyDbTester propertyDbTester = new PropertyDbTester(db);
   private ResourceTypes resourceTypes = mock(ResourceTypes.class);
   private BillingValidationsProxy billingValidations = mock(BillingValidationsProxy.class);
 
-  private ComponentDto project;
   private WsActionTester ws;
-  private OrganizationDto organization;
 
   @Test
   public void return_info_if_user_has_browse_permission_on_project() {
@@ -140,7 +138,7 @@ public class ComponentActionTest {
   @Test
   public void return_component_info_with_favourite() {
     ComponentDto project = insertOrganizationAndProject();
-    UserDto user = dbTester.users().insertUser("obiwan");
+    UserDto user = db.users().insertUser("obiwan");
     propertyDbTester.insertProperty(new PropertyDto().setKey("favourite").setResourceId(project.getId()).setUserId(user.getId()));
     userSession.logIn(user).addProjectPermission(UserRole.USER, project);
     init();
@@ -151,7 +149,7 @@ public class ComponentActionTest {
   @Test
   public void return_component_info_when_snapshot() {
     ComponentDto project = insertOrganizationAndProject();
-    dbTester.components().insertSnapshot(project, snapshot -> snapshot
+    db.components().insertSnapshot(project, snapshot -> snapshot
       .setCreatedAt(parseDateTime("2015-04-22T11:44:00+0200").getTime())
       .setVersion("3.14"));
     userSession.addProjectPermission(UserRole.USER, project);
@@ -162,8 +160,8 @@ public class ComponentActionTest {
 
   @Test
   public void return_component_info_when_file_on_master() {
-    OrganizationDto organization = dbTester.organizations().insert(o -> o.setKey("my-org2"));
-    dbTester.qualityGates().createDefaultQualityGate(organization);
+    OrganizationDto organization = db.organizations().insert(o -> o.setKey("my-org2"));
+    db.qualityGates().createDefaultQualityGate(organization);
     ComponentDto main = componentDbTester.insertMainBranch(organization, p -> p.setName("Sample"), p -> p.setDbKey("sample"));
     userSession.addProjectPermission(UserRole.USER, main);
     init();
@@ -180,26 +178,45 @@ public class ComponentActionTest {
 
   @Test
   public void return_component_info_when_file_on_branch() {
-    OrganizationDto organization = dbTester.organizations().insertForKey("my-org2");
-    dbTester.qualityGates().createDefaultQualityGate(organization);
-    ComponentDto project = componentDbTester.insertMainBranch(organization, p -> p.setName("Sample"), p -> p.setDbKey("sample"));
+    OrganizationDto organization = db.organizations().insertForKey("my-org2");
+    db.qualityGates().createDefaultQualityGate(organization);
+    ComponentDto project = componentDbTester.insertMainBranch(organization, p -> p.setName("Sample").setDbKey("sample"));
     ComponentDto branch = componentDbTester.insertProjectBranch(project, b -> b.setKey("feature1"));
     userSession.addProjectPermission(UserRole.USER, project);
     init();
-
     ComponentDto dirDto = componentDbTester.insertComponent(newDirectory(branch, "src"));
-
     ComponentDto fileDto = componentDbTester.insertComponent(newFileDto(branch, dirDto)
       .setUuid("abcd")
-      .setName("Main.xoo")
-      .setDbKey("sample:src/Main.xoo"));
+      .setName("Main.xoo"));
 
     String json = ws.newRequest()
-      .setParam("componentKey", fileDto.getDbKey())
+      .setParam("componentKey", fileDto.getKey())
       .setParam("branch", branch.getBranch())
       .execute()
       .getInput();
-    verify(json, "return_component_info_when_file_on_branch.json");
+
+    assertJson(json).isSimilarTo("{\n" +
+      "  \"key\": \"" + fileDto.getKey() + "\",\n" +
+      "  \"branch\": \"feature1\",\n" +
+      "  \"name\": \"Main.xoo\",\n" +
+      "  \"breadcrumbs\": [\n" +
+      "    {\n" +
+      "      \"key\": \"sample\",\n" +
+      "      \"name\": \"Sample\",\n" +
+      "      \"qualifier\": \"TRK\"\n" +
+      "    },\n" +
+      "    {\n" +
+      "      \"key\": \"sample:src\",\n" +
+      "      \"name\": \"src\",\n" +
+      "      \"qualifier\": \"DIR\"\n" +
+      "    },\n" +
+      "    {\n" +
+      "      \"key\": \"" + fileDto.getKey() + "\",\n" +
+      "      \"name\": \"Main.xoo\",\n" +
+      "      \"qualifier\": \"FIL\"\n" +
+      "    }\n" +
+      "  ]\n" +
+      "}\n");
   }
 
   @Test
@@ -225,11 +242,11 @@ public class ComponentActionTest {
 
   @Test
   public void return_quality_gate_defined_on_project() {
-    OrganizationDto organization = dbTester.organizations().insert(o -> o.setKey("my-org"));
-    dbTester.qualityGates().createDefaultQualityGate(organization);
-    ComponentDto project = dbTester.components().insertPrivateProject(organization);
-    QualityGateDto qualityGateDto = dbTester.qualityGates().insertQualityGate(organization, qg -> qg.setName("Sonar way"));
-    dbTester.qualityGates().associateProjectToQualityGate(project, qualityGateDto);
+    OrganizationDto organization = db.organizations().insert(o -> o.setKey("my-org"));
+    db.qualityGates().createDefaultQualityGate(organization);
+    ComponentDto project = db.components().insertPrivateProject(organization);
+    QualityGateDto qualityGateDto = db.qualityGates().insertQualityGate(organization, qg -> qg.setName("Sonar way"));
+    db.qualityGates().associateProjectToQualityGate(project, qualityGateDto);
     userSession.addProjectPermission(UserRole.USER, project);
     init();
 
@@ -238,9 +255,9 @@ public class ComponentActionTest {
 
   @Test
   public void return_default_quality_gate() {
-    OrganizationDto organization = dbTester.organizations().insert(o -> o.setKey("my-org"));
-    ComponentDto project = dbTester.components().insertPrivateProject(organization);
-    dbTester.qualityGates().createDefaultQualityGate(organization, qg -> qg.setName("Sonar way"));
+    OrganizationDto organization = db.organizations().insert(o -> o.setKey("my-org"));
+    ComponentDto project = db.components().insertPrivateProject(organization);
+    db.qualityGates().createDefaultQualityGate(organization, qg -> qg.setName("Sonar way"));
     userSession.addProjectPermission(UserRole.USER, project);
     init();
 
@@ -258,17 +275,17 @@ public class ComponentActionTest {
 
   @Test
   public void return_extensions_for_application() {
-    OrganizationDto organization = dbTester.organizations().insert(o -> o.setKey("my-org"));
-    dbTester.qualityGates().createDefaultQualityGate(organization);
-    ComponentDto project = dbTester.components().insertPrivateProject(organization);
+    OrganizationDto organization = db.organizations().insert(o -> o.setKey("my-org"));
+    db.qualityGates().createDefaultQualityGate(organization);
+    ComponentDto project = db.components().insertPrivateProject(organization);
     Page page = Page.builder("my_plugin/app_page")
       .setName("App Page")
       .setScope(COMPONENT)
       .setComponentQualifiers(Qualifier.VIEW, Qualifier.APP)
       .build();
     ComponentDto application = componentDbTester.insertPublicApplication(organization);
-    QualityGateDto qualityGateDto = dbTester.qualityGates().insertQualityGate(organization, qg -> qg.setName("Sonar way"));
-    dbTester.qualityGates().associateProjectToQualityGate(project, qualityGateDto);
+    QualityGateDto qualityGateDto = db.qualityGates().insertQualityGate(organization, qg -> qg.setName("Sonar way"));
+    db.qualityGates().associateProjectToQualityGate(project, qualityGateDto);
     userSession.registerComponents(application);
     init(page);
 
@@ -293,7 +310,7 @@ public class ComponentActionTest {
   @Test
   public void return_configuration_for_admin() {
     ComponentDto project = insertOrganizationAndProject();
-    UserDto user = dbTester.users().insertUser();
+    UserDto user = db.users().insertUser();
     userSession.logIn(user)
       .addProjectPermission(UserRole.USER, project)
       .addProjectPermission(UserRole.ADMIN, project);
@@ -394,9 +411,9 @@ public class ComponentActionTest {
 
   @Test
   public void should_return_private_flag_for_project() {
-    OrganizationDto org = dbTester.organizations().insert();
-    dbTester.qualityGates().createDefaultQualityGate(org);
-    ComponentDto project = dbTester.components().insertPrivateProject(org);
+    OrganizationDto org = db.organizations().insert();
+    db.qualityGates().createDefaultQualityGate(org);
+    ComponentDto project = db.components().insertPrivateProject(org);
     init();
 
     userSession.logIn()
@@ -407,9 +424,9 @@ public class ComponentActionTest {
 
   @Test
   public void should_return_public_flag_for_project() {
-    OrganizationDto org = dbTester.organizations().insert();
-    dbTester.qualityGates().createDefaultQualityGate(org);
-    ComponentDto project = dbTester.components().insertPublicProject(org);
+    OrganizationDto org = db.organizations().insert();
+    db.qualityGates().createDefaultQualityGate(org);
+    ComponentDto project = db.components().insertPublicProject(org);
     init();
 
     userSession.logIn()
@@ -420,10 +437,10 @@ public class ComponentActionTest {
 
   @Test
   public void should_not_return_private_flag_for_module() {
-    OrganizationDto org = dbTester.organizations().insert();
-    dbTester.qualityGates().createDefaultQualityGate(org);
-    ComponentDto project = dbTester.components().insertPrivateProject(org);
-    ComponentDto module = dbTester.components().insertComponent(ComponentTesting.newModuleDto(project));
+    OrganizationDto org = db.organizations().insert();
+    db.qualityGates().createDefaultQualityGate(org);
+    ComponentDto project = db.components().insertPrivateProject(org);
+    ComponentDto module = db.components().insertComponent(ComponentTesting.newModuleDto(project));
     init();
 
     userSession.logIn()
@@ -435,9 +452,9 @@ public class ComponentActionTest {
 
   @Test
   public void canApplyPermissionTemplate_is_true_if_logged_in_as_organization_administrator() {
-    OrganizationDto org = dbTester.organizations().insert();
-    dbTester.qualityGates().createDefaultQualityGate(org);
-    ComponentDto project = dbTester.components().insertPrivateProject(org);
+    OrganizationDto org = db.organizations().insert();
+    db.qualityGates().createDefaultQualityGate(org);
+    ComponentDto project = db.components().insertPrivateProject(org);
     init(createPages());
 
     userSession.logIn()
@@ -453,9 +470,9 @@ public class ComponentActionTest {
 
   @Test
   public void canUpdateProjectVisibilityToPrivate_is_true_if_logged_in_as_project_administrator_and_extension_returns_false() {
-    OrganizationDto org = dbTester.organizations().insert();
-    dbTester.qualityGates().createDefaultQualityGate(org);
-    ComponentDto project = dbTester.components().insertPublicProject(org);
+    OrganizationDto org = db.organizations().insert();
+    db.qualityGates().createDefaultQualityGate(org);
+    ComponentDto project = db.components().insertPublicProject(org);
     init(createPages());
 
     userSession.logIn().addProjectPermission(UserRole.ADMIN, project);
@@ -498,7 +515,7 @@ public class ComponentActionTest {
   @Test
   public void test_example_response() {
     init(createPages());
-    OrganizationDto organizationDto = dbTester.organizations().insertForKey("my-org-1");
+    OrganizationDto organizationDto = db.organizations().insertForKey("my-org-1");
     ComponentDto project = newPrivateProjectDto(organizationDto, "ABCD")
       .setDbKey("org.codehaus.sonar:sonar")
       .setName("Sonarqube")
@@ -510,13 +527,13 @@ public class ComponentActionTest {
       .setLast(true);
     componentDbTester.insertSnapshot(analysis);
     when(resourceTypes.get(project.qualifier())).thenReturn(DefaultResourceTypes.get().getRootType());
-    UserDto user = dbTester.users().insertUser("obiwan");
+    UserDto user = db.users().insertUser("obiwan");
     propertyDbTester.insertProperty(new PropertyDto().setKey("favourite").setResourceId(project.getId()).setUserId(user.getId()));
     addQualityProfiles(project,
       createQProfile("qp1", "Sonar Way Java", "java"),
       createQProfile("qp2", "Sonar Way Xoo", "xoo"));
-    QualityGateDto qualityGateDto = dbTester.qualityGates().insertQualityGate(dbTester.getDefaultOrganization(), qg -> qg.setName("Sonar way"));
-    dbTester.qualityGates().associateProjectToQualityGate(project, qualityGateDto);
+    QualityGateDto qualityGateDto = db.qualityGates().insertQualityGate(db.getDefaultOrganization(), qg -> qg.setName("Sonar way"));
+    db.qualityGates().associateProjectToQualityGate(project, qualityGateDto);
     userSession.logIn(user)
       .addProjectPermission(UserRole.USER, project)
       .addProjectPermission(UserRole.ADMIN, project);
@@ -546,10 +563,10 @@ public class ComponentActionTest {
     assertThat(componentId.deprecatedKeySince()).isEqualTo("6.4");
   }
 
-  private ComponentDto insertOrganizationAndProject(){
-    OrganizationDto organization = dbTester.organizations().insert(o -> o.setKey("my-org"));
-    dbTester.qualityGates().createDefaultQualityGate(organization);
-    return dbTester.components().insertPrivateProject(organization, "abcd", p -> p.setDbKey("polop").setName("Polop").setDescription("test project"));
+  private ComponentDto insertOrganizationAndProject() {
+    OrganizationDto organization = db.organizations().insert(o -> o.setKey("my-org"));
+    db.qualityGates().createDefaultQualityGate(organization);
+    return db.components().insertPrivateProject(organization, "abcd", p -> p.setDbKey("polop").setName("Polop").setDescription("test project"));
   }
 
   private void init(Page... pages) {
@@ -580,11 +597,11 @@ public class ComponentActionTest {
 
   private void addQualityProfiles(ComponentDto project, QualityProfile... qps) {
     MetricDto metric = newMetricDto().setKey(QUALITY_PROFILES_KEY);
-    dbClient.metricDao().insert(dbTester.getSession(), metric);
-    dbClient.liveMeasureDao().insert(dbTester.getSession(),
+    dbClient.metricDao().insert(db.getSession(), metric);
+    dbClient.liveMeasureDao().insert(db.getSession(),
       newLiveMeasure(project, metric)
         .setData(qualityProfilesToJson(qps)));
-    dbTester.commit();
+    db.commit();
   }
 
   private Page[] createPages() {