@@ -127,7 +127,7 @@ class IssueDaoIT {
127127
128128 @ BeforeEach
129129 void setup () {
130- int i = db .countSql (db .getSession (), "select count(1) from rules_default_impacts" );
130+ db .countSql (db .getSession (), "select count(1) from rules_default_impacts" );
131131
132132 db .rules ().insert (RULE .setIsExternal (true ));
133133 projectData = db .components ().insertPrivateProject (t -> t .setUuid (PROJECT_UUID ).setKey (PROJECT_KEY ));
@@ -1230,6 +1230,55 @@ void insertIssueImpacts_should_insert_all_values() {
12301230 .containsExactlyInAnyOrder (tuple (MAINTAINABILITY , MEDIUM , true ), tuple (RELIABILITY , HIGH , false ));
12311231 }
12321232
1233+ @ Test
1234+ void resetFlagFromSonarQubeUpdate_shouldResetFlagAndUpdateTimestamp () {
1235+ RuleDto rule = db .rules ().insert ();
1236+ ComponentDto project = db .components ().insertPrivateProject ().getMainBranchComponent ();
1237+ ComponentDto file = db .components ().insertComponent (newFileDto (project ));
1238+
1239+ // Insert issues with from_sonarqube_update = true
1240+ db .issues ().insert (rule , project , file ,
1241+ i -> i .setKee ("issue1" ).setFromSonarQubeUpdate (true ).setUpdatedAt (1_000_000_000_000L ));
1242+ db .issues ().insert (rule , project , file ,
1243+ i -> i .setKee ("issue2" ).setFromSonarQubeUpdate (true ).setUpdatedAt (1_000_000_000_000L ));
1244+ db .issues ().insert (rule , project , file ,
1245+ i -> i .setKee ("issue3" ).setFromSonarQubeUpdate (true ).setUpdatedAt (1_000_000_000_000L ));
1246+
1247+ // Insert issues with from_sonarqube_update = false
1248+ db .issues ().insert (rule , project , file ,
1249+ i -> i .setKee ("issue4" ).setFromSonarQubeUpdate (false ).setUpdatedAt (1_000_000_000_000L ));
1250+ db .issues ().insert (rule , project , file ,
1251+ i -> i .setKee ("issue5" ).setFromSonarQubeUpdate (false ).setUpdatedAt (1_000_000_000_000L ));
1252+
1253+ // Execute the method under test
1254+ int affectedRows = underTest .resetFlagFromSonarQubeUpdate (db .getSession ());
1255+ db .getSession ().commit ();
1256+
1257+ assertThat (affectedRows ).isEqualTo (3 );
1258+
1259+ IssueDto updatedIssue1 = underTest .selectByKey (db .getSession (), "issue1" ).get ();
1260+ IssueDto updatedIssue2 = underTest .selectByKey (db .getSession (), "issue2" ).get ();
1261+ IssueDto updatedIssue3 = underTest .selectByKey (db .getSession (), "issue3" ).get ();
1262+
1263+ assertThat (updatedIssue1 .isFromSonarQubeUpdate ()).isFalse ();
1264+ assertThat (updatedIssue2 .isFromSonarQubeUpdate ()).isFalse ();
1265+ assertThat (updatedIssue3 .isFromSonarQubeUpdate ()).isFalse ();
1266+
1267+ // Verify that updated_at was changed for affected issues
1268+ assertThat (updatedIssue1 .getUpdatedAt ()).isGreaterThan (1_000_000_000_000L );
1269+ assertThat (updatedIssue2 .getUpdatedAt ()).isGreaterThan (1_000_000_000_000L );
1270+ assertThat (updatedIssue3 .getUpdatedAt ()).isGreaterThan (1_000_000_000_000L );
1271+
1272+ // Verify that issues with flag=false remain unchanged
1273+ IssueDto unchangedIssue4 = underTest .selectByKey (db .getSession (), "issue4" ).get ();
1274+ IssueDto unchangedIssue5 = underTest .selectByKey (db .getSession (), "issue5" ).get ();
1275+
1276+ assertThat (unchangedIssue4 .isFromSonarQubeUpdate ()).isFalse ();
1277+ assertThat (unchangedIssue5 .isFromSonarQubeUpdate ()).isFalse ();
1278+ assertThat (unchangedIssue4 .getUpdatedAt ()).isEqualTo (1_000_000_000_000L );
1279+ assertThat (unchangedIssue5 .getUpdatedAt ()).isEqualTo (1_000_000_000_000L );
1280+ }
1281+
12331282 private static IssueDto createIssueWithKey (String issueKey ) {
12341283 return createIssueWithKey (issueKey , PROJECT_UUID , FILE_UUID );
12351284 }
0 commit comments