diff options
author | Matteo Mara <matteo.mara@sonarsource.com> | 2023-08-29 11:36:56 +0200 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2023-08-30 20:03:06 +0000 |
commit | 4adb0c6df2f24190bdc216e1d305132e433e1afe (patch) | |
tree | 79bb6c8cd970bc20c0764c5a7d830a89cb055eba /server/sonar-db-dao | |
parent | a071713469d8ab358099b913a214aab0aa27cd4a (diff) | |
download | sonarqube-4adb0c6df2f24190bdc216e1d305132e433e1afe.tar.gz sonarqube-4adb0c6df2f24190bdc216e1d305132e433e1afe.zip |
SONAR-19839 branch renaming gets propagated to new code periods branch references
Diffstat (limited to 'server/sonar-db-dao')
-rw-r--r-- | server/sonar-db-dao/src/it/java/org/sonar/db/newcodeperiod/NewCodePeriodDaoIT.java | 47 | ||||
-rw-r--r-- | server/sonar-db-dao/src/main/java/org/sonar/db/newcodeperiod/NewCodePeriodDao.java | 10 |
2 files changed, 57 insertions, 0 deletions
diff --git a/server/sonar-db-dao/src/it/java/org/sonar/db/newcodeperiod/NewCodePeriodDaoIT.java b/server/sonar-db-dao/src/it/java/org/sonar/db/newcodeperiod/NewCodePeriodDaoIT.java index 06777152e46..01c710e2c57 100644 --- a/server/sonar-db-dao/src/it/java/org/sonar/db/newcodeperiod/NewCodePeriodDaoIT.java +++ b/server/sonar-db-dao/src/it/java/org/sonar/db/newcodeperiod/NewCodePeriodDaoIT.java @@ -29,6 +29,7 @@ import org.sonar.core.util.UuidFactory; import org.sonar.db.DbSession; import org.sonar.db.DbTester; import org.sonar.db.component.BranchDto; +import org.sonar.db.component.BranchType; import org.sonar.db.component.ProjectData; import org.sonar.db.project.ProjectDto; @@ -119,6 +120,52 @@ public class NewCodePeriodDaoIT { } @Test + public void update_referenceBranchPeriod_value() { + insert("1", "proj-uuid", null, REFERENCE_BRANCH, "oldBranchName", null); + insert("2", "proj-uuid-2", null, REFERENCE_BRANCH, "anotherBranch", null); + + underTest.updateBranchReferenceValues(dbSession, new BranchDto() + .setBranchType(BranchType.BRANCH) + .setUuid("branch-uuid") + .setProjectUuid("proj-uuid") + .setKey("oldBranchName"), "newBranchName"); + + //second project reference branch renaming should not affect the reference branch + underTest.updateBranchReferenceValues(dbSession, new BranchDto() + .setBranchType(BranchType.BRANCH) + .setUuid("branch-uuid") + .setProjectUuid("proj-uuid-2") + .setKey("oldBranchName"), "newBranchName"); + + db.commit(); + + Optional<NewCodePeriodDto> updatedNewCodePeriod = underTest.selectByUuid(dbSession, "1"); + Optional<NewCodePeriodDto> unmodifiedNewCodePeriod = underTest.selectByUuid(dbSession, "2"); + + assertThat(updatedNewCodePeriod).isNotNull() + .isNotEmpty(); + + assertThat(unmodifiedNewCodePeriod).isNotNull() + .isNotEmpty(); + + assertNewCodePeriodRowCount(2); + + NewCodePeriodDto updatedResult = updatedNewCodePeriod.get(); + assertThat(updatedResult.getUuid()).isEqualTo("1"); + assertThat(updatedResult.getProjectUuid()).isEqualTo("proj-uuid"); + assertThat(updatedResult.getBranchUuid()).isNull(); + assertThat(updatedResult.getType()).isEqualTo(REFERENCE_BRANCH); + assertThat(updatedResult.getValue()).isEqualTo("newBranchName"); + + NewCodePeriodDto unmodifiedResult = unmodifiedNewCodePeriod.get(); + assertThat(unmodifiedResult.getUuid()).isEqualTo("2"); + assertThat(unmodifiedResult.getProjectUuid()).isEqualTo("proj-uuid-2"); + assertThat(unmodifiedResult.getBranchUuid()).isNull(); + assertThat(unmodifiedResult.getType()).isEqualTo(REFERENCE_BRANCH); + assertThat(unmodifiedResult.getValue()).isEqualTo("anotherBranch"); + } + + @Test public void insert_with_upsert() { insert("1", "proj-uuid", "branch-uuid", NUMBER_OF_DAYS, "5", null); diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/newcodeperiod/NewCodePeriodDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/newcodeperiod/NewCodePeriodDao.java index f3d680ed095..316d7fd7bed 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/newcodeperiod/NewCodePeriodDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/newcodeperiod/NewCodePeriodDao.java @@ -27,6 +27,7 @@ import org.sonar.api.utils.System2; import org.sonar.core.util.UuidFactory; import org.sonar.db.Dao; import org.sonar.db.DbSession; +import org.sonar.db.component.BranchDto; import static java.util.Objects.requireNonNull; import static java.util.Optional.ofNullable; @@ -74,6 +75,15 @@ public class NewCodePeriodDao implements Dao { mapper(dbSession).update(dto.setUpdatedAt(system2.now())); } + public void updateBranchReferenceValues(DbSession dbSession, BranchDto branchDto, String newBranchName) { + requireNonNull(branchDto, "Original referenced branch must be specified."); + requireNonNull(branchDto.getProjectUuid(), MSG_PROJECT_UUID_NOT_SPECIFIED); + requireNonNull(newBranchName, "New branch name must be specified."); + selectAllByProject(dbSession, branchDto.getProjectUuid()).stream() + .filter(newCP -> NewCodePeriodType.REFERENCE_BRANCH.equals(newCP.getType()) && branchDto.getBranchKey().equals(newCP.getValue())) + .forEach(newCodePeriodDto -> update(dbSession, newCodePeriodDto.setValue(newBranchName))); + } + public Optional<NewCodePeriodDto> selectByProject(DbSession dbSession, String projectUuid) { requireNonNull(projectUuid, MSG_PROJECT_UUID_NOT_SPECIFIED); return ofNullable(mapper(dbSession).selectByProject(projectUuid)); |