@VisibleForTesting ProjectsResult searchProjects(DbSession dbSession, SearchMyProjectsRequest request) { int userId = requireNonNull(userSession.getUserId(), "Current user must be authenticated"); List<Long> componentIds = dbClient.roleDao().selectComponentIdsByPermissionAndUserId(dbSession, UserRole.ADMIN, userId); ComponentQuery dbQuery = ComponentQuery.builder() .setQualifiers(Qualifiers.PROJECT) .setComponentIds(ImmutableSet.copyOf(componentIds.subList(0, Math.min(componentIds.size(), DatabaseUtils.PARTITION_SIZE_FOR_ORACLE)))) .build(); return new ProjectsResult( dbClient.componentDao().selectByQuery(dbSession, dbQuery, offset(request.getPage(), request.getPageSize()), request.getPageSize()), dbClient.componentDao().countByQuery(dbSession, dbQuery)); }
@Test public void empty_list_of_components() { Supplier<ComponentQuery.Builder> query = () -> ComponentQuery.builder().setQualifiers(PROJECT); assertThat(query.get().setComponentIds(emptySet()).build().hasEmptySetOfComponents()).isTrue(); assertThat(query.get().setComponentKeys(emptySet()).build().hasEmptySetOfComponents()).isTrue(); assertThat(query.get().setComponentUuids(emptySet()).build().hasEmptySetOfComponents()).isTrue(); assertThat(query.get().setComponentIds(singleton(404L)).build().hasEmptySetOfComponents()).isFalse(); assertThat(query.get().setComponentKeys(singleton("P1")).build().hasEmptySetOfComponents()).isFalse(); assertThat(query.get().setComponentUuids(singleton("U1")).build().hasEmptySetOfComponents()).isFalse(); }
@Test public void selectByQuery_on_empty_list_of_component_id() { db.components().insertPrivateProject(); ComponentQuery dbQuery = ComponentQuery.builder().setQualifiers(PROJECT).setComponentIds(emptySet()).build(); List<ComponentDto> result = underTest.selectByQuery(dbSession, dbQuery, 0, 10); int count = underTest.countByQuery(dbSession, dbQuery); assertThat(result).isEmpty(); assertThat(count).isEqualTo(0); }
@VisibleForTesting ProjectsResult searchProjects(DbSession dbSession, SearchMyProjectsRequest request) { int userId = requireNonNull(userSession.getUserId(), "Current user must be authenticated"); List<Long> componentIds = dbClient.roleDao().selectComponentIdsByPermissionAndUserId(dbSession, UserRole.ADMIN, userId); ComponentQuery dbQuery = ComponentQuery.builder() .setQualifiers(Qualifiers.PROJECT) .setComponentIds(ImmutableSet.copyOf(componentIds.subList(0, Math.min(componentIds.size(), DatabaseUtils.PARTITION_SIZE_FOR_ORACLE)))) .build(); return new ProjectsResult( dbClient.componentDao().selectByQuery(dbSession, dbQuery, offset(request.getPage(), request.getPageSize()), request.getPageSize()), dbClient.componentDao().countByQuery(dbSession, dbQuery)); }
@Test public void selectByQuery_on_component_ids() { OrganizationDto organizationDto = db.organizations().insert(); ComponentDto sonarqube = db.components().insertComponent(newPrivateProjectDto(organizationDto)); ComponentDto jdk8 = db.components().insertComponent(newPrivateProjectDto(organizationDto)); ComponentDto cLang = db.components().insertComponent(newPrivateProjectDto(organizationDto)); ComponentQuery query = ComponentQuery.builder().setQualifiers(PROJECT) .setComponentIds(newHashSet(sonarqube.getId(), jdk8.getId())).build(); List<ComponentDto> result = underTest.selectByQuery(dbSession, query, 0, 10); assertThat(result).hasSize(2).extracting(ComponentDto::getId) .containsOnlyOnce(sonarqube.getId(), jdk8.getId()) .doesNotContain(cLang.getId()); }