]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-8292 Quality Profile change includes the author of the modification 1382/head
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Mon, 14 Nov 2016 16:20:17 +0000 (17:20 +0100)
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Tue, 15 Nov 2016 09:08:46 +0000 (10:08 +0100)
server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRuleChange.java
server/sonar-server/src/main/java/org/sonar/server/qualityprofile/RuleActivator.java
server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ActiveRuleChangeTest.java [new file with mode: 0644]
sonar-db/src/test/java/org/sonar/db/qualityprofile/QProfileChangeDaoTest.java

index 3c1bc44396443e75571340423db878b0c4050431..84f7097f3b6a947cafb48f07a030d13ec7722b3f 100644 (file)
@@ -89,10 +89,11 @@ public class ActiveRuleChange {
     return this;
   }
 
-  public QProfileChangeDto toDto() {
+  public QProfileChangeDto toDto(@Nullable String login) {
     QProfileChangeDto dto = new QProfileChangeDto();
     dto.setChangeType(type.name());
     dto.setProfileKey(getKey().qProfile());
+    dto.setLogin(login);
     Map<String, String> data = new HashMap<>();
     data.put("key", getKey().toString());
     data.put("ruleKey", getKey().ruleKey().toString());
index fe02285ced6df9fa0895e1c4242bf90ccbf76ace..913f08504d8995f7f877f66241197dc71eeb56bf 100644 (file)
@@ -252,7 +252,7 @@ public class RuleActivator {
       activeRule = doUpdate(change, context, dbSession);
     }
 
-    db.qProfileChangeDao().insert(dbSession, change.toDto());
+    db.qProfileChangeDao().insert(dbSession, change.toDto(userSession.getLogin()));
     return activeRule;
   }
 
diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ActiveRuleChangeTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ActiveRuleChangeTest.java
new file mode 100644 (file)
index 0000000..bbba3c4
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program 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.
+ *
+ * This program 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.Test;
+import org.sonar.api.rule.RuleKey;
+import org.sonar.db.qualityprofile.ActiveRuleKey;
+import org.sonar.db.qualityprofile.QProfileChangeDto;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.sonar.server.qualityprofile.ActiveRuleChange.Type.ACTIVATED;
+
+public class ActiveRuleChangeTest {
+
+  private static final String MY_LOGIN = "MY_LOGIN";
+
+  private ActiveRuleChange underTest = ActiveRuleChange.createFor(ACTIVATED, ActiveRuleKey.of("QP1", RuleKey.of("P1", "R1")));
+
+  @Test
+  public void to_dto() {
+    QProfileChangeDto result = underTest.toDto(MY_LOGIN);
+
+    assertThat(result.getChangeType()).isEqualTo(ACTIVATED.name());
+    assertThat(result.getProfileKey()).isEqualTo("QP1");
+    assertThat(result.getLogin()).isEqualTo(MY_LOGIN);
+  }
+}
index 65e3dae8948780e58d0d4acecb6fafb9ee4bde20..c0560eecf1798771cf84cece2afc6117e2ff5de5 100644 (file)
@@ -184,6 +184,24 @@ public class QProfileChangeDaoTest {
     assertThat(changes).extracting(QProfileChangeDto::getKey).containsExactly("C3", "C2");
   }
 
+  @Test
+  public void selectByQuery_mapping() {
+    when(system2.now()).thenReturn(A_DATE);
+    when(uuidFactory.create()).thenReturn("C1");
+    insertChange("P1", "ACTIVATED", "Oscar", "data");
+
+    List<QProfileChangeDto> result = underTest.selectByQuery(dbSession, new QProfileChangeQuery("P1"));
+
+    assertThat(result).hasSize(1);
+    QProfileChangeDto change = result.get(0);
+    assertThat(change.getProfileKey()).isEqualTo("P1");
+    assertThat(change.getLogin()).isEqualTo("Oscar");
+    assertThat(change.getData()).isEqualTo("data");
+    assertThat(change.getChangeType()).isEqualTo("ACTIVATED");
+    assertThat(change.getKey()).isEqualTo("C1");
+    assertThat(change.getCreatedAt()).isEqualTo(A_DATE);
+  }
+
   @Test
   public void test_countForProfileKey() {
     when(system2.now()).thenReturn(A_DATE, A_DATE + 10);