From 387eec46dbf1ecf3fd0bfc37e156b1475bf5546d Mon Sep 17 00:00:00 2001 From: Teryk Bellahsene Date: Mon, 14 Nov 2016 17:20:17 +0100 Subject: [PATCH] SONAR-8292 Quality Profile change includes the author of the modification --- .../qualityprofile/ActiveRuleChange.java | 3 +- .../server/qualityprofile/RuleActivator.java | 2 +- .../qualityprofile/ActiveRuleChangeTest.java | 45 +++++++++++++++++++ .../qualityprofile/QProfileChangeDaoTest.java | 18 ++++++++ 4 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ActiveRuleChangeTest.java diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRuleChange.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRuleChange.java index 3c1bc443964..84f7097f3b6 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRuleChange.java +++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRuleChange.java @@ -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 data = new HashMap<>(); data.put("key", getKey().toString()); data.put("ruleKey", getKey().ruleKey().toString()); diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/RuleActivator.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/RuleActivator.java index fe02285ced6..913f08504d8 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/RuleActivator.java +++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/RuleActivator.java @@ -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 index 00000000000..bbba3c4f30d --- /dev/null +++ b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ActiveRuleChangeTest.java @@ -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); + } +} diff --git a/sonar-db/src/test/java/org/sonar/db/qualityprofile/QProfileChangeDaoTest.java b/sonar-db/src/test/java/org/sonar/db/qualityprofile/QProfileChangeDaoTest.java index 65e3dae8948..c0560eecf17 100644 --- a/sonar-db/src/test/java/org/sonar/db/qualityprofile/QProfileChangeDaoTest.java +++ b/sonar-db/src/test/java/org/sonar/db/qualityprofile/QProfileChangeDaoTest.java @@ -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 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); -- 2.39.5