diff options
author | Vojtech Suchy <vojtech.suchy@sonarsource.com> | 2024-11-12 14:06:36 +0100 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2024-11-19 20:02:53 +0000 |
commit | 966250379cd22b0c1ff462194bdea6fb4fa85e49 (patch) | |
tree | 40ed723bb2e915786c7bc763cdd99c48735ffad3 /server/sonar-db-dao/src/it | |
parent | 0adcf3598f8c70bb3f085272295557f306f444fc (diff) | |
download | sonarqube-966250379cd22b0c1ff462194bdea6fb4fa85e49.tar.gz sonarqube-966250379cd22b0c1ff462194bdea6fb4fa85e49.zip |
CODEFIX-181 Introduce a new endpoint for AI CodeFix project level enablement
Diffstat (limited to 'server/sonar-db-dao/src/it')
-rw-r--r-- | server/sonar-db-dao/src/it/java/org/sonar/db/project/ProjectDaoIT.java | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/server/sonar-db-dao/src/it/java/org/sonar/db/project/ProjectDaoIT.java b/server/sonar-db-dao/src/it/java/org/sonar/db/project/ProjectDaoIT.java index 0157ec89288..6de21b9cf7d 100644 --- a/server/sonar-db-dao/src/it/java/org/sonar/db/project/ProjectDaoIT.java +++ b/server/sonar-db-dao/src/it/java/org/sonar/db/project/ProjectDaoIT.java @@ -34,6 +34,8 @@ import org.assertj.core.api.Assertions; import org.assertj.core.groups.Tuple; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import org.sonar.api.impl.utils.AlwaysIncreasingSystem2; import org.sonar.api.utils.System2; import org.sonar.db.DbTester; @@ -290,6 +292,50 @@ class ProjectDaoIT { } @Test + void update_aiCodeFixEnabledPerProject() { + ProjectDto dto1 = createProject("o1", "p1").setAiCodeFixEnabled(true); + ProjectDto dto2 = createProject("o1", "p2"); + + projectDao.insert(db.getSession(), dto1); + projectDao.insert(db.getSession(), dto2); + + List<ProjectDto> projectsByUuids = projectDao.selectByUuids(db.getSession(), new HashSet<>(Arrays.asList("uuid_o1_p1", "uuid_o1_p2"))); + assertThat(projectsByUuids).hasSize(2); + assertProjectAiCodeFixEnablement(projectsByUuids.get(0), "uuid_o1_p1", true); + assertProjectAiCodeFixEnablement(projectsByUuids.get(1), "uuid_o1_p2", false); + + projectDao.update(db.getSession(), projectsByUuids.get(0).setAiCodeFixEnabled(false)); + projectDao.update(db.getSession(), projectsByUuids.get(1).setAiCodeFixEnabled(true)); + + projectsByUuids = projectDao.selectByUuids(db.getSession(), new HashSet<>(Arrays.asList("uuid_o1_p1", "uuid_o1_p2"))); + assertThat(projectsByUuids).hasSize(2); + assertProjectAiCodeFixEnablement(projectsByUuids.get(0), "uuid_o1_p1", false); + assertProjectAiCodeFixEnablement(projectsByUuids.get(1), "uuid_o1_p2", true); + } + + @ParameterizedTest + @ValueSource(booleans = { true, false }) + void update_aiCodeFixEnabledForAllProjects(boolean aiCodeFixEnablement) { + ProjectDto dto1 = createProject("o1", "p1").setAiCodeFixEnabled(true); + ProjectDto dto2 = createProject("o1", "p2"); + + projectDao.insert(db.getSession(), dto1); + projectDao.insert(db.getSession(), dto2); + + List<ProjectDto> projectsByUuids = projectDao.selectByUuids(db.getSession(), new HashSet<>(Arrays.asList("uuid_o1_p1", "uuid_o1_p2"))); + assertThat(projectsByUuids).hasSize(2); + assertProjectAiCodeFixEnablement(projectsByUuids.get(0), "uuid_o1_p1", true); + assertProjectAiCodeFixEnablement(projectsByUuids.get(1), "uuid_o1_p2", false); + + projectDao.updateAiCodeFixEnablementForAllProjects(db.getSession(), aiCodeFixEnablement); + + projectsByUuids = projectDao.selectByUuids(db.getSession(), new HashSet<>(Arrays.asList("uuid_o1_p1", "uuid_o1_p2"))); + assertThat(projectsByUuids).hasSize(2); + assertProjectAiCodeFixEnablement(projectsByUuids.get(0), "uuid_o1_p1", aiCodeFixEnablement); + assertProjectAiCodeFixEnablement(projectsByUuids.get(1), "uuid_o1_p2", aiCodeFixEnablement); + } + + @Test void select_by_uuids() { ProjectDto dto1 = createProject("o1", "p1"); ProjectDto dto2 = createProject("o1", "p2"); @@ -447,6 +493,10 @@ class ProjectDaoIT { .containsExactly(name, kee, kee, uuid, desc, tags, isPrivate, isAiCodeAssurance); } + private void assertProjectAiCodeFixEnablement(ProjectDto dto, String uuid, boolean isAiCodeFixEnabled) { + assertThat(dto).extracting("uuid", "aiCodeFixEnabled").containsExactly(uuid, isAiCodeFixEnabled); + } + private ProjectDto createProject(String org, String name) { return new ProjectDto() .setName("projectName_" + name) |