import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
+import org.sonar.db.component.ComponentDbTester;
+import org.sonar.db.component.ComponentDto;
import org.sonar.db.organization.OrganizationDbTester;
import org.sonar.db.organization.OrganizationDto;
private final DbSession dbSession = dbTester.getSession();
private final WebhookDao underTest = dbClient.webhookDao();
private final WebhookDbTester webhookDbTester = dbTester.webhooks();
+ private final ComponentDbTester componentDbTester = dbTester.components();
private final OrganizationDbTester organizationDbTester = dbTester.organizations();
+
@Test
public void selectByUuid_returns_empty_if_uuid_does_not_exist() {
assertThat(underTest.selectByUuid(dbSession, "missing")).isEmpty();
assertThat(new Date(reloaded.getUpdatedAt())).isInSameMinuteWindowAs(new Date(system2.now()));
}
+ @Test
+ public void cleanWebhooksOfAProject() {
+
+ OrganizationDto organization = organizationDbTester.insert();
+ ComponentDto componentDto = componentDbTester.insertPrivateProject(organization);
+ webhookDbTester.insertWebhook(componentDto);
+ webhookDbTester.insertWebhook(componentDto);
+ webhookDbTester.insertWebhook(componentDto);
+ webhookDbTester.insertWebhook(componentDto);
+
+ underTest.cleanWebhooks(dbSession, componentDto);
+
+ Optional<WebhookDto> reloaded = underTest.selectByUuid(dbSession, componentDto.uuid());
+ assertThat(reloaded).isEmpty();
+ }
+
+ @Test
+ public void cleanWebhooksOfAnOrganization() {
+
+ OrganizationDto organization = organizationDbTester.insert();
+ webhookDbTester.insertWebhook(organization);
+ webhookDbTester.insertWebhook(organization);
+ webhookDbTester.insertWebhook(organization);
+ webhookDbTester.insertWebhook(organization);
+
+ underTest.cleanWebhooks(dbSession, organization);
+
+ Optional<WebhookDto> reloaded = underTest.selectByUuid(dbSession, organization.getUuid());
+ assertThat(reloaded).isEmpty();
+ }
+
@Test
public void delete() {
OrganizationDto organization = organizationDbTester.insert();
+
WebhookDto dto = webhookDbTester.insertWebhook(organization);
underTest.delete(dbSession, dto.getUuid());
private void deleteProjects(DbSession dbSession, OrganizationDto organization) {
List<ComponentDto> roots = dbClient.componentDao().selectAllRootsByOrganization(dbSession, organization.getUuid());
+ roots.forEach(project -> dbClient.webhookDao().cleanWebhooks(dbSession, project));
componentCleanerService.delete(dbSession, roots);
}
dbClient.organizationMemberDao().deleteByOrganizationUuid(dbSession, organization.getUuid());
dbClient.organizationDao().deleteByUuid(dbSession, organization.getUuid());
dbClient.userDao().cleanHomepage(dbSession, organization);
+ dbClient.webhookDao().cleanWebhooks(dbSession, organization);
userIndexer.commitAndIndexByLogins(dbSession, logins);
}