@@ -116,6 +116,19 @@ class QualityGateConditionDaoIT { | |||
assertThat(underTest.selectByUuid(condition2.getUuid(), dbSession)).isNotNull(); | |||
} | |||
@Test | |||
void testDeleteForQualityGate() { | |||
QualityGateConditionDto condition1 = insertQGCondition("qualityGateUuid"); | |||
QualityGateConditionDto condition2 = insertQGCondition("qualityGateUuid"); | |||
underTest.deleteForQualityGate("qualityGateUuid", dbSession); | |||
dbSession.commit(); | |||
assertThat(underTest.selectForQualityGate(dbSession, "qualityGateUuid")).isEmpty(); | |||
assertThat(underTest.selectByUuid(condition1.getUuid(), dbSession)).isNull(); | |||
assertThat(underTest.selectByUuid(condition2.getUuid(), dbSession)).isNull(); | |||
} | |||
@Test | |||
void testUpdate() { | |||
QualityGateConditionDto condition1 = insertQGCondition("2"); |
@@ -46,6 +46,10 @@ public class QualityGateConditionDao implements Dao { | |||
mapper(session).delete(qGate.getUuid()); | |||
} | |||
public void deleteForQualityGate(String qGateUuid, DbSession session) { | |||
mapper(session).deleteForQualityGate(qGateUuid); | |||
} | |||
public void update(QualityGateConditionDto qGate, DbSession session) { | |||
mapper(session).update(qGate.setUpdatedAt(new Date())); | |||
} |
@@ -35,5 +35,7 @@ public interface QualityGateConditionMapper { | |||
void delete(String uuid); | |||
void deleteForQualityGate(String qGateUuid); | |||
void deleteConditionsWithInvalidMetrics(); | |||
} |
@@ -37,6 +37,10 @@ | |||
delete from quality_gate_conditions where uuid=#{uuid} | |||
</update> | |||
<update id="deleteForQualityGate" parameterType="String"> | |||
delete from quality_gate_conditions where qgate_uuid=#{qGateUuid} | |||
</update> | |||
<update id="update" parameterType="QualityGateCondition"> | |||
update quality_gate_conditions set | |||
metric_uuid=#{metricUuid}, |
@@ -27,6 +27,7 @@ import org.sonar.db.DbSession; | |||
import org.sonar.db.DbTester; | |||
import org.sonar.db.Pagination; | |||
import org.sonar.db.project.ProjectDto; | |||
import org.sonar.db.qualitygate.QualityGateConditionDto; | |||
import org.sonar.db.qualitygate.QualityGateDto; | |||
import org.sonar.db.user.GroupDto; | |||
import org.sonar.db.user.UserDto; | |||
@@ -39,6 +40,7 @@ import org.sonar.server.ws.WsActionTester; | |||
import static java.lang.String.format; | |||
import static java.lang.String.valueOf; | |||
import static org.apache.commons.lang.RandomStringUtils.randomAlphanumeric; | |||
import static org.assertj.core.api.Assertions.assertThat; | |||
import static org.assertj.core.api.Assertions.assertThatThrownBy; | |||
import static org.assertj.core.api.Assertions.tuple; | |||
@@ -76,6 +78,23 @@ public class DestroyActionIT { | |||
assertThat(db.getDbClient().qualityGateDao().selectByUuid(dbSession, qualityGate.getUuid())).isNull(); | |||
} | |||
@Test | |||
public void delete_quality_gate_should_delete_its_conditions() { | |||
userSession.addPermission(ADMINISTER_QUALITY_GATES); | |||
db.qualityGates().createDefaultQualityGate(); | |||
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(); | |||
insertARandomCondition(qualityGate); | |||
ws.newRequest() | |||
.setParam(PARAM_NAME, qualityGate.getName()) | |||
.execute(); | |||
assertThat(db.getDbClient().qualityGateDao().selectByUuid(dbSession, qualityGate.getUuid())).isNull(); | |||
assertThat(db.getDbClient().gateConditionDao().selectForQualityGate(dbSession, qualityGate.getUuid())).isEmpty(); | |||
} | |||
@Test | |||
public void delete_quality_gate_if_non_default_when_a_default_exist() { | |||
db.qualityGates().createDefaultQualityGate(); | |||
@@ -228,4 +247,12 @@ public class DestroyActionIT { | |||
tuple("name", true)); | |||
} | |||
private void insertARandomCondition(QualityGateDto qualityGate) { | |||
QualityGateConditionDto condition = new QualityGateConditionDto() | |||
.setUuid(randomAlphanumeric(40)) | |||
.setMetricUuid(randomAlphanumeric(40)) | |||
.setQualityGateUuid(qualityGate.getUuid()); | |||
db.getDbClient().gateConditionDao().insert(condition, db.getSession()); | |||
db.commit(); | |||
} | |||
} |
@@ -82,6 +82,7 @@ public class DestroyAction implements QualityGatesWsAction { | |||
dbClient.qualityGateGroupPermissionsDao().deleteByQualityGate(dbSession, qualityGate); | |||
dbClient.qualityGateUserPermissionDao().deleteByQualityGate(dbSession, qualityGate); | |||
dbClient.qualityGateDao().delete(qualityGate, dbSession); | |||
dbClient.gateConditionDao().deleteForQualityGate(qualityGate.getUuid(), dbSession); | |||
dbSession.commit(); | |||
response.noContent(); | |||
} |