@Override public String getId() { return key(); }
@Test public void iterator_over_one_issue() { dbTester.prepareDbUnit(getClass(), "one_issue.xml"); Map<String, IssueDoc> issuesByKey = issuesByKey(); assertThat(issuesByKey).hasSize(1); IssueDoc issue = issuesByKey.get("ABC"); assertThat(issue.key()).isEqualTo("ABC"); assertThat(issue.resolution()).isEqualTo("FIXED"); assertThat(issue.status()).isEqualTo("RESOLVED"); assertThat(issue.severity()).isEqualTo("BLOCKER"); assertThat(issue.assigneeUuid()).isEqualTo("uuid-of-guy1"); assertThat(issue.authorLogin()).isEqualTo("guy2"); assertThat(issue.line()).isEqualTo(444); assertThat(issue.ruleId()).isEqualTo(200); assertThat(issue.componentUuid()).isEqualTo("FILE1"); assertThat(issue.projectUuid()).isEqualTo("PROJECT1"); assertThat(issue.moduleUuid()).isEqualTo("PROJECT1"); assertThat(issue.modulePath()).isEqualTo(".PROJECT1."); assertThat(issue.directoryPath()).isEqualTo("src/main/java"); assertThat(issue.filePath()).isEqualTo("src/main/java/Action.java"); assertThat(issue.getTags()).containsOnly("tag1", "tag2", "tag3"); assertThat(issue.effort().toMinutes()).isGreaterThan(0L); assertThat(issue.type().getDbConstant()).isEqualTo(2); }
private IndexRequest newIndexRequest(IssueDoc issue) { String projectUuid = issue.projectUuid(); return esClient.prepareIndex(INDEX_TYPE_ISSUE) .setId(issue.key()) .setRouting(projectUuid) .setParent(projectUuid) .setSource(issue.getFields()) .request(); }
assertThat(issue.key()).isEqualTo("ABC"); assertThat(issue.assigneeUuid()).isEqualTo("uuid-of-guy1"); assertThat(issue.componentUuid()).isEqualTo("FILE1"); assertThat(issue.key()).isEqualTo("BCD"); assertThat(issue.assigneeUuid()).isEqualTo("uuid-of-guy1"); assertThat(issue.componentUuid()).isEqualTo("MODULE1"); assertThat(issue.key()).isEqualTo("DEF"); assertThat(issue.assigneeUuid()).isEqualTo("uuid-of-guy2"); assertThat(issue.componentUuid()).isEqualTo("FILE1"); assertThat(issue.key()).isEqualTo("EFG"); assertThat(issue.assigneeUuid()).isEqualTo("uuid-of-guy1"); assertThat(issue.componentUuid()).isEqualTo("DIR1");
@Test public void filter_by_main_application() { ComponentDto application1 = db.components().insertPrivateApplication(db.getDefaultOrganization()); ComponentDto application2 = db.components().insertPrivateApplication(db.getDefaultOrganization()); ComponentDto project1 = db.components().insertPrivateProject(); ComponentDto file = db.components().insertComponent(newFileDto(project1)); ComponentDto project2 = db.components().insertPrivateProject(); indexView(application1.uuid(), singletonList(project1.uuid())); indexView(application2.uuid(), singletonList(project2.uuid())); IssueDoc issueOnProject1 = newDoc(project1); IssueDoc issueOnFile = newDoc(file); IssueDoc issueOnProject2 = newDoc(project2); indexIssues(issueOnProject1, issueOnFile, issueOnProject2); assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(singletonList(application1.uuid())), issueOnProject1.key(), issueOnFile.key()); assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(singletonList(application2.uuid())), issueOnProject2.key()); assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(asList(application1.uuid(), application2.uuid())), issueOnProject1.key(), issueOnFile.key(), issueOnProject2.key()); assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(singletonList(application1.uuid())).projectUuids(singletonList(project1.uuid())), issueOnProject1.key(), issueOnFile.key()); assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(singletonList(application1.uuid())).fileUuids(singletonList(file.uuid())), issueOnFile.key()); assertThatSearchReturnsEmpty(IssueQuery.builder().viewUuids(singletonList("unknown"))); }
@Test public void filter_by_portfolios() { ComponentDto portfolio1 = db.components().insertPrivateApplication(db.getDefaultOrganization()); ComponentDto portfolio2 = db.components().insertPrivateApplication(db.getDefaultOrganization()); ComponentDto project1 = db.components().insertPrivateProject(); ComponentDto file = db.components().insertComponent(newFileDto(project1)); ComponentDto project2 = db.components().insertPrivateProject(); IssueDoc issueOnProject1 = newDoc(project1); IssueDoc issueOnFile = newDoc(file); IssueDoc issueOnProject2 = newDoc(project2); indexIssues(issueOnProject1, issueOnFile, issueOnProject2); indexView(portfolio1.uuid(), singletonList(project1.uuid())); indexView(portfolio2.uuid(), singletonList(project2.uuid())); assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(singletonList(portfolio1.uuid())), issueOnProject1.key(), issueOnFile.key()); assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(singletonList(portfolio2.uuid())), issueOnProject2.key()); assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(asList(portfolio1.uuid(), portfolio2.uuid())), issueOnProject1.key(), issueOnFile.key(), issueOnProject2.key()); assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(singletonList(portfolio1.uuid())).projectUuids(singletonList(project1.uuid())), issueOnProject1.key(), issueOnFile.key()); assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(singletonList(portfolio1.uuid())).fileUuids(singletonList(file.uuid())), issueOnFile.key()); assertThatSearchReturnsEmpty(IssueQuery.builder().viewUuids(singletonList("unknown"))); }
@Test public void issues_from_main_branch() { ComponentDto project = db.components().insertPrivateProject(); ComponentDto branch = db.components().insertProjectBranch(project); IssueDoc issueOnProject = newDoc(project); IssueDoc issueOnBranch = newDoc(branch); indexIssues(issueOnProject, issueOnBranch); assertThatSearchReturnsOnly(IssueQuery.builder().branchUuid(project.uuid()).mainBranch(true), issueOnProject.key()); assertThatSearchReturnsOnly(IssueQuery.builder().componentUuids(singletonList(project.uuid())).branchUuid(project.uuid()).mainBranch(true), issueOnProject.key()); assertThatSearchReturnsOnly(IssueQuery.builder().projectUuids(singletonList(project.uuid())).branchUuid(project.uuid()).mainBranch(true), issueOnProject.key()); assertThatSearchReturnsOnly( IssueQuery.builder().componentUuids(singletonList(project.uuid())).projectUuids(singletonList(project.uuid())).branchUuid(project.uuid()).mainBranch(true), issueOnProject.key()); }
@Test public void do_not_return_issues_from_project_branch_when_filtering_by_portfolios() { ComponentDto portfolio = db.components().insertPrivateApplication(db.getDefaultOrganization()); ComponentDto project = db.components().insertMainBranch(); ComponentDto projectBranch = db.components().insertProjectBranch(project); ComponentDto fileOnProjectBranch = db.components().insertComponent(newFileDto(projectBranch)); indexView(portfolio.uuid(), singletonList(project.uuid())); IssueDoc issueOnProject = newDoc(project); IssueDoc issueOnProjectBranch = newDoc(projectBranch); IssueDoc issueOnFileOnProjectBranch = newDoc(fileOnProjectBranch); indexIssues(issueOnProject, issueOnFileOnProjectBranch, issueOnProjectBranch); assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(singletonList(portfolio.uuid())), issueOnProject.key()); assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(singletonList(portfolio.uuid())).projectUuids(singletonList(project.uuid())), issueOnProject.key()); assertThatSearchReturnsEmpty(IssueQuery.builder().viewUuids(singletonList(portfolio.uuid())).projectUuids(singletonList(projectBranch.uuid()))); }
@Test public void filter_by_application_branch() { ComponentDto application = db.components().insertMainBranch(c -> c.setQualifier(APP)); ComponentDto branch1 = db.components().insertProjectBranch(application); ComponentDto branch2 = db.components().insertProjectBranch(application); ComponentDto project1 = db.components().insertPrivateProject(); ComponentDto file = db.components().insertComponent(newFileDto(project1)); ComponentDto project2 = db.components().insertPrivateProject(); indexView(branch1.uuid(), singletonList(project1.uuid())); indexView(branch2.uuid(), singletonList(project2.uuid())); IssueDoc issueOnProject1 = newDoc(project1); IssueDoc issueOnFile = newDoc(file); IssueDoc issueOnProject2 = newDoc(project2); indexIssues(issueOnProject1, issueOnFile, issueOnProject2); assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(singletonList(branch1.uuid())).branchUuid(branch1.uuid()).mainBranch(false), issueOnProject1.key(), issueOnFile.key()); assertThatSearchReturnsOnly( IssueQuery.builder().viewUuids(singletonList(branch1.uuid())).projectUuids(singletonList(project1.uuid())).branchUuid(branch1.uuid()).mainBranch(false), issueOnProject1.key(), issueOnFile.key()); assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(singletonList(branch1.uuid())).fileUuids(singletonList(file.uuid())).branchUuid(branch1.uuid()).mainBranch(false), issueOnFile.key()); assertThatSearchReturnsEmpty(IssueQuery.builder().branchUuid("unknown")); }
@Test public void filter_one_issue_by_project_and_branch() { ComponentDto project = db.components().insertPrivateProject(); ComponentDto branch = db.components().insertProjectBranch(project); ComponentDto anotherbBranch = db.components().insertProjectBranch(project); IssueDoc issueOnProject = newDoc(project); IssueDoc issueOnBranch = newDoc(branch); IssueDoc issueOnAnotherBranch = newDoc(anotherbBranch); indexIssues(issueOnProject, issueOnBranch, issueOnAnotherBranch); assertThatSearchReturnsOnly(IssueQuery.builder().branchUuid(branch.uuid()).mainBranch(false), issueOnBranch.key()); assertThatSearchReturnsOnly(IssueQuery.builder().componentUuids(singletonList(branch.uuid())).branchUuid(branch.uuid()).mainBranch(false), issueOnBranch.key()); assertThatSearchReturnsOnly(IssueQuery.builder().projectUuids(singletonList(project.uuid())).branchUuid(branch.uuid()).mainBranch(false), issueOnBranch.key()); assertThatSearchReturnsOnly( IssueQuery.builder().componentUuids(singletonList(branch.uuid())).projectUuids(singletonList(project.uuid())).branchUuid(branch.uuid()).mainBranch(false), issueOnBranch.key()); assertThatSearchReturnsEmpty(IssueQuery.builder().branchUuid("unknown")); }
project1Issue1.key()); project1.uuid(), new IssueQuery.PeriodStart(addDays(now, -14), true), project2.uuid(), new IssueQuery.PeriodStart(addDays(now, -25), true))), project1Issue1.key(), project2Issue1.key()); .createdAfterByProjectUuids(ImmutableMap.of( project1.uuid(), new IssueQuery.PeriodStart(addDays(now, -30), true))), project1Issue1.key(), project1Issue2.key());
@Test public void filter_by_application_branch_having_project_branches() { ComponentDto application = db.components().insertMainBranch(c -> c.setQualifier(APP).setDbKey("app")); ComponentDto applicationBranch1 = db.components().insertProjectBranch(application, a -> a.setKey("app-branch1")); ComponentDto applicationBranch2 = db.components().insertProjectBranch(application, a -> a.setKey("app-branch2")); ComponentDto project1 = db.components().insertPrivateProject(p -> p.setDbKey("prj1")); ComponentDto project1Branch1 = db.components().insertProjectBranch(project1); ComponentDto fileOnProject1Branch1 = db.components().insertComponent(newFileDto(project1Branch1)); ComponentDto project1Branch2 = db.components().insertProjectBranch(project1); ComponentDto project2 = db.components().insertPrivateProject(p -> p.setDbKey("prj2")); indexView(applicationBranch1.uuid(), asList(project1Branch1.uuid(), project2.uuid())); indexView(applicationBranch2.uuid(), singletonList(project1Branch2.uuid())); IssueDoc issueOnProject1 = newDoc(project1); IssueDoc issueOnProject1Branch1 = newDoc(project1Branch1); IssueDoc issueOnFileOnProject1Branch1 = newDoc(fileOnProject1Branch1); IssueDoc issueOnProject1Branch2 = newDoc(project1Branch2); IssueDoc issueOnProject2 = newDoc(project2); indexIssues(issueOnProject1, issueOnProject1Branch1, issueOnFileOnProject1Branch1, issueOnProject1Branch2, issueOnProject2); assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(singletonList(applicationBranch1.uuid())).branchUuid(applicationBranch1.uuid()).mainBranch(false), issueOnProject1Branch1.key(), issueOnFileOnProject1Branch1.key(), issueOnProject2.key()); assertThatSearchReturnsOnly( IssueQuery.builder().viewUuids(singletonList(applicationBranch1.uuid())).projectUuids(singletonList(project1.uuid())).branchUuid(applicationBranch1.uuid()).mainBranch(false), issueOnProject1Branch1.key(), issueOnFileOnProject1Branch1.key()); assertThatSearchReturnsOnly( IssueQuery.builder().viewUuids(singletonList(applicationBranch1.uuid())).fileUuids(singletonList(fileOnProject1Branch1.uuid())).branchUuid(applicationBranch1.uuid()) .mainBranch(false), issueOnFileOnProject1Branch1.key()); assertThatSearchReturnsEmpty( IssueQuery.builder().viewUuids(singletonList(applicationBranch1.uuid())).projectUuids(singletonList("unknown")).branchUuid(applicationBranch1.uuid()).mainBranch(false)); }
@Test public void branch_issues_are_ignored_when_no_branch_param() { ComponentDto project = db.components().insertPrivateProject(); ComponentDto branch = db.components().insertProjectBranch(project, b -> b.setKey("my_branch")); IssueDoc projectIssue = newDoc(project); IssueDoc branchIssue = newDoc(branch); indexIssues(projectIssue, branchIssue); assertThatSearchReturnsOnly(IssueQuery.builder(), projectIssue.key()); }
@Override public String getId() { return key(); }
private IndexRequest newIndexRequest(IssueDoc issue) { String projectUuid = issue.projectUuid(); return esClient.prepareIndex(INDEX_TYPE_ISSUE) .setId(issue.key()) .setRouting(projectUuid) .setParent(projectUuid) .setSource(issue.getFields()) .request(); }