@DataProvider public static Object[][] nonProjectComponentFactory() { return new Object[][] { {(Function<ComponentDto, ComponentDto>) ComponentTesting::newModuleDto}, {(Function<ComponentDto, ComponentDto>) p -> ComponentTesting.newDirectory(p, "foo")}, {(Function<ComponentDto, ComponentDto>) ComponentTesting::newFileDto} }; }
@Test public void selectRootAndModulesOrSubviewsByProjectUuid_does_not_return_directory_with_specified_uuid() { ComponentDto privateProject = db.components().insertPrivateProject(); ComponentDto directory = db.components().insertComponent(ComponentTesting.newDirectory(privateProject, "A/B")); assertThat(purgeMapper.selectRootAndModulesOrSubviewsByProjectUuid(directory.uuid())) .isEmpty(); }
@Test public void facet_on_directories_return_100_entries_plus_selected_values() { OrganizationDto organizationDto = newOrganizationDto(); ComponentDto project = newPrivateProjectDto(organizationDto); indexIssues(rangeClosed(1, 110).mapToObj(i -> newDoc(newFileDto(project, newDirectory(project, "dir" + i))).setDirectoryPath("a" + i)).toArray(IssueDoc[]::new)); IssueDoc issue1 = newDoc(newFileDto(project, newDirectory(project, "path1"))).setDirectoryPath("directory1"); IssueDoc issue2 = newDoc(newFileDto(project, newDirectory(project, "path2"))).setDirectoryPath("directory2"); indexIssues(issue1, issue2); assertThatFacetHasSize(IssueQuery.builder().build(), "directories", 100); assertThatFacetHasSize(IssueQuery.builder().directories(asList(issue1.directoryPath(), issue2.directoryPath())).build(), "directories", 102); }
@Test public void fail_for_property_without_definition_when_set_on_directory_component() { ComponentDto project = randomPublicOrPrivateProject(); ComponentDto directory = db.components().insertComponent(ComponentTesting.newDirectory(project, "A/B")); failForPropertyWithoutDefinitionOnUnsupportedComponent(project, directory); }
@Test public void param_componentUuids_enables_search_in_directory_tree() { ComponentDto project = db.components().insertPrivateProject(); ComponentDto dir = db.components().insertComponent(newDirectory(project, "src/main/java/foo")); SearchRequest request = new SearchRequest() .setComponentUuids(asList(dir.uuid())); IssueQuery query = underTest.create(request); assertThat(query.moduleUuids()).containsOnly(dir.moduleUuid()); assertThat(query.directories()).containsOnly(dir.path()); assertThat(query.onComponentOnly()).isFalse(); }
@Test public void select_component_keys_by_qualifiers() { ComponentDto project = db.components().insertPrivateProject(); ComponentDto module = db.components().insertComponent(newModuleDto(project)); ComponentDto directory = db.components().insertComponent(newDirectory(module, "src")); ComponentDto file = db.components().insertComponent(newFileDto(directory)); assertThat(underTest.selectComponentsByQualifiers(dbSession, newHashSet("TRK"))).extracting(ComponentDto::getDbKey).containsExactlyInAnyOrder(project.getDbKey()); assertThat(underTest.selectComponentsByQualifiers(dbSession, newHashSet("BRC"))).extracting(ComponentDto::getDbKey).containsExactlyInAnyOrder(module.getDbKey()); assertThat(underTest.selectComponentsByQualifiers(dbSession, newHashSet("DIR"))).extracting(ComponentDto::getDbKey).containsExactlyInAnyOrder(directory.getDbKey()); assertThat(underTest.selectComponentsByQualifiers(dbSession, newHashSet("FIL"))).extracting(ComponentDto::getDbKey).containsExactlyInAnyOrder(file.getDbKey()); assertThat(underTest.selectComponentsByQualifiers(dbSession, newHashSet("unknown"))).isEmpty(); }
@Test public void fail_if_directory() { ComponentDto project = db.components().insertPrivateProject(); ComponentDto directory = db.components().insertComponent(ComponentTesting.newDirectory(project, "A/B")); failIfNotAProject(project, directory); }
@Test public void fail_if_directory() { ComponentDto project = db.components().insertPrivateProject(); ComponentDto directory = db.components().insertComponent(ComponentTesting.newDirectory(project, "A/B")); failIfNotAProject(project, directory); }
@Test public void get_by_key_and_branch() { ComponentDto project = db.components().insertMainBranch(); ComponentDto branch = db.components().insertProjectBranch(project, b -> b.setKey("my_branch")); ComponentDto module = db.components().insertComponent(newModuleDto(branch)); ComponentDto directory = db.components().insertComponent(newDirectory(module, "scr")); ComponentDto file = db.components().insertComponent(newFileDto(module)); assertThat(underTest.getByKeyAndBranch(dbSession, project.getKey(), "my_branch").uuid()).isEqualTo(branch.uuid()); assertThat(underTest.getByKeyAndBranch(dbSession, module.getKey(), "my_branch").uuid()).isEqualTo(module.uuid()); assertThat(underTest.getByKeyAndBranch(dbSession, file.getKey(), "my_branch").uuid()).isEqualTo(file.uuid()); assertThat(underTest.getByKeyAndBranch(dbSession, directory.getKey(), "my_branch").uuid()).isEqualTo(directory.uuid()); }
@Test public void fail_if_directory() { ComponentDto project = db.components().insertPrivateProject(); ComponentDto dir = db.components().insertComponent(newDirectory(project, "dir")); userSession.addProjectPermission(UserRole.USER, project); MetricDto metric = db.measures().insertMetric(); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Only component of qualifiers [TRK, APP, VW, SVW] are allowed"); call(singletonList(dir.getDbKey()), singletonList(metric.getKey())); }
@Test public void fail_when_component_is_a_directory() { ComponentDto file = db.components().insertComponent(newDirectory(ComponentTesting.newPrivateProjectDto(db.organizations().insert()), "A/B")); failIfComponentIsNotAProjectOrView(file); }
private ComponentDto randomComponent(OrganizationDto organization) { ComponentDto project = dbTester.components().insertPublicProject(organization); ComponentDto module = dbTester.components().insertComponent(ComponentTesting.newModuleDto(project)); ComponentDto dir = dbTester.components().insertComponent(ComponentTesting.newDirectory(project, "foo")); ComponentDto file = dbTester.components().insertComponent(ComponentTesting.newFileDto(project)); ComponentDto[] components = new ComponentDto[] {project, module, dir, file}; return components[random.nextInt(components.length)]; }
@Test public void fail_when_component_is_a_directory() { ComponentDto file = db.components().insertComponent(newDirectory(ComponentTesting.newPrivateProjectDto(db.organizations().insert()), "A/B")); failIfComponentIsNotAProjectOrView(file); }
@Test public void fail_when_component_is_a_directory() { ComponentDto file = db.components().insertComponent(newDirectory(ComponentTesting.newPrivateProjectDto(db.organizations().insert()), "A/B")); failIfComponentIsNotAProjectOrView(file); }
@Test public void get_by_key_and_pull_request() { ComponentDto project = db.components().insertMainBranch(); ComponentDto branch = db.components().insertProjectBranch(project, b -> b.setKey("pr-123").setBranchType(PULL_REQUEST).setMergeBranchUuid(project.uuid())); ComponentDto module = db.components().insertComponent(newModuleDto(branch)); ComponentDto directory = db.components().insertComponent(newDirectory(module, "scr")); ComponentDto file = db.components().insertComponent(newFileDto(module)); assertThat(underTest.getByKeyAndOptionalBranchOrPullRequest(dbSession, project.getKey(), null, "pr-123").uuid()).isEqualTo(branch.uuid()); assertThat(underTest.getByKeyAndOptionalBranchOrPullRequest(dbSession, module.getKey(), null, "pr-123").uuid()).isEqualTo(module.uuid()); assertThat(underTest.getByKeyAndOptionalBranchOrPullRequest(dbSession, file.getKey(), null, "pr-123").uuid()).isEqualTo(file.uuid()); assertThat(underTest.getByKeyAndOptionalBranchOrPullRequest(dbSession, directory.getKey(), null, "pr-123").uuid()).isEqualTo(directory.uuid()); }
@Test public void deleteProject_fails_with_IAE_if_specified_component_is_directory() { ComponentDto privateProject = db.components().insertPrivateProject(); ComponentDto directory = db.components().insertComponent(newDirectory(privateProject, "A/B")); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Couldn't find root component with uuid " + directory.uuid()); underTest.deleteProject(dbSession, directory.uuid()); }
@Test(expected = BadRequestException.class) public void fail_on_directory_key_as_param() { ComponentDto project = insertOrganizationAndProject(); ComponentDto module = componentDbTester.insertComponent(newModuleDto("bcde", project).setDbKey("palap").setName("Palap")); ComponentDto directory = componentDbTester.insertComponent(newDirectory(module, "src/main/xoo")); userSession.addProjectPermission(UserRole.USER, project); init(); execute(directory.getDbKey()); }
@Test public void return_bread_crumbs_on_several_levels() { ComponentDto project = insertOrganizationAndProject(); ComponentDto module = componentDbTester.insertComponent(newModuleDto("bcde", project).setDbKey("palap").setName("Palap")); ComponentDto directory = componentDbTester.insertComponent(newDirectory(module, "src/main/xoo")); ComponentDto file = componentDbTester.insertComponent(newFileDto(directory, directory, "cdef").setName("Source.xoo") .setDbKey("palap:src/main/xoo/Source.xoo") .setPath(directory.path())); userSession.addProjectPermission(UserRole.USER, project); init(); executeAndVerify(file.getDbKey(), "return_bread_crumbs_on_several_levels.json"); }
@Test public void return_error_on_directory() throws ParseException { ComponentDto project = db.components().insertPublicProject(); ComponentDto directory = db.components().insertComponent(ComponentTesting.newDirectory(project, "path")); userSession.registerComponents(project); MetricDto metric = db.measures().insertMetric(m -> m.setKey(BUGS_KEY).setValueType(INT.name())); TestResponse response = ws.newRequest() .setParam("project", directory.getKey()) .setParam("metric", metric.getKey()) .execute(); checkError(response, "Project is invalid"); }
@Before public void setUp() throws Exception { intMetric = db.measures().insertMetric(m -> m.setValueType(Metric.ValueType.INT.name())); ratingMetric = db.measures().insertMetric(m -> m.setValueType(Metric.ValueType.RATING.name())); alertStatusMetric = db.measures().insertMetric(m -> m.setKey(CoreMetrics.ALERT_STATUS_KEY)); organization = db.organizations().insert(); project = db.components().insertMainBranch(organization); dir = db.components().insertComponent(ComponentTesting.newDirectory(project, "src/main/java")); file1 = db.components().insertComponent(ComponentTesting.newFileDto(project, dir)); file2 = db.components().insertComponent(ComponentTesting.newFileDto(project, dir)); }