/** * Return effective quality gate of a project. * * It will first try to get the quality gate explicitly defined on a project, if none it will try to return default quality gate of the organization */ public Optional<QualityGateData> getQualityGate(DbSession dbSession, OrganizationDto organization, ComponentDto component) { Optional<QualityGateData> res = dbClient.projectQgateAssociationDao().selectQGateIdByComponentId(dbSession, component.getId()) .map(qualityGateId -> dbClient.qualityGateDao().selectById(dbSession, qualityGateId)) .map(qualityGateDto -> new QualityGateData(qualityGateDto, false)); if (res.isPresent()) { return res; } return ofNullable(dbClient.qualityGateDao().selectByOrganizationAndUuid(dbSession, organization, organization.getDefaultQualityGateUuid())) .map(qualityGateDto -> new QualityGateData(qualityGateDto, true)); }
@Test public void select_qgate_id_is_absent() { ComponentDto project = db.components().insertPrivateProject(); Optional<Long> result = underTest.selectQGateIdByComponentId(dbSession, project.getId()); assertThat(result.isPresent()).isFalse(); }
@Test public void select_qgate_id() { OrganizationDto organization = db.organizations().insert(); QGateWithOrgDto qualityGate1 = db.qualityGates().insertQualityGate(organization); QGateWithOrgDto qualityGate2 = db.qualityGates().insertQualityGate(organization); ComponentDto project1 = db.components().insertPrivateProject(organization); ComponentDto project2 = db.components().insertPrivateProject(organization); db.qualityGates().associateProjectToQualityGate(project1, qualityGate1); db.qualityGates().associateProjectToQualityGate(project2, qualityGate2); Optional<Long> result = underTest.selectQGateIdByComponentId(dbSession, project1.getId()); assertThat(result).contains(qualityGate1.getId()); }
/** * Return effective quality gate of a project. * * It will first try to get the quality gate explicitly defined on a project, if none it will try to return default quality gate of the organization */ public QualityGateData getQualityGate(DbSession dbSession, OrganizationDto organization, ComponentDto component) { Optional<Long> qualityGateId = dbClient.projectQgateAssociationDao().selectQGateIdByComponentId(dbSession, component.getId()); if (qualityGateId.isPresent()) { QualityGateDto qualityGate = checkFound(dbClient.qualityGateDao().selectById(dbSession, qualityGateId.get()), "No quality gate has been found for id %s", qualityGateId); return new QualityGateData(qualityGate, false); } QualityGateDto defaultQualityGate = dbClient.qualityGateDao().selectByOrganizationAndUuid(dbSession, organization, organization.getDefaultQualityGateUuid()); checkState(defaultQualityGate != null, "Unable to find the quality gate [%s] for organization [%s]", organization.getDefaultQualityGateUuid(), organization.getUuid()); return new QualityGateData(defaultQualityGate, true); }