public static final Set<String> AVAILABLE_MEMBERSHIP = ImmutableSet.of(ANY, IN, OUT);
private final String gateId;
+ private final String organizationUuid;
private final String membership;
private final String projectSearch;
private ProjectQgateAssociationQuery(Builder builder) {
this.gateId = Long.toString(builder.qualityGate.getId());
+ this.organizationUuid = builder.qualityGate.getOrganizationUuid();
this.membership = builder.membership;
this.projectSearch = builder.projectSearch;
if (this.projectSearch == null) {
return gateId;
}
+ public String organizationUuid() {
+ return organizationUuid;
+ }
+
@CheckForNull
public String membership() {
return membership;
and proj.enabled = ${_true}
and proj.main_branch_project_uuid is null
and proj.copy_component_uuid is null
+ and proj.organization_uuid=#{query.organizationUuid, jdbcType=VARCHAR}
<choose>
<when test="query.membership() == 'selected'">
and prop.text_value IS NOT NULL
.containsExactly(project1.getId(), project3.getId(), project2.getId());
}
+ @Test
+ public void return_only_projects_from_organization() {
+ OrganizationDto organization = db.organizations().insert();
+ OrganizationDto otherOrganization = db.organizations().insert();
+ QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization);
+ QGateWithOrgDto otherQualityGate = db.qualityGates().insertQualityGate(otherOrganization);
+ ComponentDto project = db.components().insertPrivateProject(organization);
+ ComponentDto otherProject = db.components().insertPrivateProject(otherOrganization);
+ db.qualityGates().associateProjectToQualityGate(project, qualityGate);
+ db.qualityGates().associateProjectToQualityGate(otherProject, otherQualityGate);
+
+ List<ProjectQgateAssociationDto> result = underTest.selectProjects(dbSession, ProjectQgateAssociationQuery.builder()
+ .qualityGate(qualityGate)
+ .build());
+
+ assertThat(result)
+ .extracting(ProjectQgateAssociationDto::getId)
+ .containsExactlyInAnyOrder(project.getId());
+ }
+
@Test
public void select_qgate_id_is_absent() {
ComponentDto project = db.components().insertPrivateProject();
OrganizationDto organization = db.organizations().insert();
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(organization);
for (int i = 0; i < 20; i++) {
- ComponentDto project = db.components().insertPublicProject();
+ ComponentDto project = db.components().insertPublicProject(organization);
db.qualityGates().associateProjectToQualityGate(project, qualityGate);
}
assertThat(response.getResultsCount()).isEqualTo(10);
}
+ @Test
+ public void return_only_projects_from_organization() {
+ OrganizationDto organization = db.organizations().insert();
+ OrganizationDto otherOrganization = db.organizations().insert();
+ QualityGateDto qualityGate = db.qualityGates().insertQualityGate(organization);
+ QualityGateDto otherQualityGate = db.qualityGates().insertQualityGate(otherOrganization);
+ ComponentDto project = db.components().insertPublicProject(organization);
+ ComponentDto otherProject = db.components().insertPublicProject(otherOrganization);
+ db.qualityGates().associateProjectToQualityGate(project, qualityGate);
+ db.qualityGates().associateProjectToQualityGate(otherProject, otherQualityGate);
+
+ SearchResponse response = ws.newRequest()
+ .setParam(PARAM_GATE_ID, valueOf(qualityGate.getId()))
+ .setParam(PARAM_ORGANIZATION, organization.getKey())
+ .setParam(PARAM_SELECTED, ALL.value())
+ .executeProtobuf(SearchResponse.class);
+
+ assertThat(response.getResultsList())
+ .extracting(Result::getName)
+ .containsExactlyInAnyOrder(project.name());
+ }
+
@Test
public void fail_on_unknown_quality_gate() {
OrganizationDto organization = db.organizations().insert();