public IssueDto selectOrFailByKey(DbSession session, String key) { Optional<IssueDto> issue = selectByKey(session, key); if (!issue.isPresent()) { throw new RowNotFoundException(String.format("Issue with key '%s' does not exist", key)); } return issue.get(); }
public IssueDto getByKey(DbSession session, String issueKey) { IssueDto issue = dbClient.issueDao().selectByKey(session, issueKey).orElseThrow(() -> new NotFoundException(format("Issue with key '%s' does not exist", issueKey))); userSession.checkComponentUuidPermission(UserRole.USER, requireNonNull(issue.getProjectUuid())); return issue; }
private void checkIssueAssignee(String issueKey, @Nullable String expectedAssignee) { IssueDto issueReloaded = dbClient.issueDao().selectByKey(db.getSession(), issueKey).get(); assertThat(issueReloaded.getAssigneeUuid()).isEqualTo(expectedAssignee); assertThat(issueReloaded.getIssueUpdateTime()).isEqualTo(NOW); assertThat(issueReloaded.getUpdatedAt()).isEqualTo(NOW); } }
private void assertDataInDb(DbData data, boolean exists) { assertThat(dbClient.componentDao().selectByUuid(dbSession, data.project.uuid()).isPresent()).isEqualTo(exists); assertThat(dbClient.snapshotDao().selectByUuid(dbSession, data.snapshot.getUuid()).isPresent()).isEqualTo(exists); assertThat(dbClient.issueDao().selectByKey(dbSession, data.issue.getKey()).isPresent()).isEqualTo(exists); }
@Test public void set_tags() { IssueDto issueDto = db.issues().insertIssue(newIssue().setTags(singletonList("old-tag"))); logIn(issueDto); call(issueDto.getKey(), "bug", "todo"); verify(responseWriter).write(eq(issueDto.getKey()), preloadedSearchResponseDataCaptor.capture(), any(Request.class), any(Response.class)); verifyContentOfPreloadedSearchResponseData(issueDto); IssueDto issueReloaded = dbClient.issueDao().selectByKey(db.getSession(), issueDto.getKey()).get(); assertThat(issueReloaded.getTags()).containsOnly("bug", "todo"); assertThat(issueChangePostProcessor.wasCalled()).isFalse(); }
@Test public void set_severity() { IssueDto issueDto = issueDbTester.insertIssue(newIssue().setSeverity(MAJOR)); setUserWithBrowseAndAdministerIssuePermission(issueDto); call(issueDto.getKey(), MINOR); verify(responseWriter).write(eq(issueDto.getKey()), preloadedSearchResponseDataCaptor.capture(), any(Request.class), any(Response.class)); verifyContentOfPreloadedSearchResponseData(issueDto); IssueDto issueReloaded = dbClient.issueDao().selectByKey(dbTester.getSession(), issueDto.getKey()).get(); assertThat(issueReloaded.getSeverity()).isEqualTo(MINOR); assertThat(issueReloaded.isManualSeverity()).isTrue(); assertThat(issueChangePostProcessor.calledComponents()) .extracting(ComponentDto::uuid) .containsExactlyInAnyOrder(issueDto.getComponentUuid()); }
@Test public void remove_existing_tags_when_value_is_not_set() { IssueDto issueDto = db.issues().insertIssue(newIssue().setTags(singletonList("old-tag"))); logIn(issueDto); call(issueDto.getKey()); IssueDto issueReloaded = dbClient.issueDao().selectByKey(db.getSession(), issueDto.getKey()).get(); assertThat(issueReloaded.getTags()).isEmpty(); assertThat(issueChangePostProcessor.wasCalled()).isFalse(); }
@Test public void add_comment() { IssueDto issueDto = issueDbTester.insertIssue(); loginWithBrowsePermission(issueDto, USER); call(issueDto.getKey(), "please fix it"); verify(responseWriter).write(eq(issueDto.getKey()), preloadedSearchResponseDataCaptor.capture(), any(Request.class), any(Response.class)); verifyContentOfPreloadedSearchResponseData(issueDto); IssueChangeDto issueComment = dbClient.issueChangeDao().selectByTypeAndIssueKeys(dbTester.getSession(), singletonList(issueDto.getKey()), TYPE_COMMENT).get(0); assertThat(issueComment.getKey()).isNotNull(); assertThat(issueComment.getUserUuid()).isEqualTo(userSession.getUuid()); assertThat(issueComment.getChangeType()).isEqualTo(TYPE_COMMENT); assertThat(issueComment.getChangeData()).isEqualTo("please fix it"); assertThat(issueComment.getCreatedAt()).isNotNull(); assertThat(issueComment.getUpdatedAt()).isNotNull(); assertThat(issueComment.getIssueKey()).isEqualTo(issueDto.getKey()); assertThat(issueComment.getIssueChangeCreationDate()).isNotNull(); IssueDto issueReloaded = dbClient.issueDao().selectByKey(dbTester.getSession(), issueDto.getKey()).get(); assertThat(issueReloaded.getIssueUpdateTime()).isEqualTo(NOW); assertThat(issueChangePostProcessor.wasCalled()).isFalse(); }
@Test public void assign_to_me() { IssueDto issue = newIssueWithBrowsePermission(); ws.newRequest() .setParam("issue", issue.getKey()) .setParam("assignee", "_me") .execute(); checkIssueAssignee(issue.getKey(), CURRENT_USER_UUID); Optional<IssueDto> optionalIssueDto = dbClient.issueDao().selectByKey(session, issue.getKey()); assertThat(optionalIssueDto).isPresent(); assertThat(optionalIssueDto.get().getAssigneeUuid()).isEqualTo(CURRENT_USER_UUID); assertThat(issueChangePostProcessor.wasCalled()).isFalse(); }
@Test public void unassign() { IssueDto issue = newIssueWithBrowsePermission(); ws.newRequest() .setParam("issue", issue.getKey()) .execute(); checkIssueAssignee(issue.getKey(), null); Optional<IssueDto> optionalIssueDto = dbClient.issueDao().selectByKey(session, issue.getKey()); assertThat(optionalIssueDto).isPresent(); assertThat(optionalIssueDto.get().getAssigneeUuid()).isNull(); assertThat(issueChangePostProcessor.wasCalled()).isFalse(); }
@Test public void unassign_with_empty_assignee_param() { IssueDto issue = newIssueWithBrowsePermission(); ws.newRequest() .setParam("issue", issue.getKey()) .setParam("assignee", "") .execute(); checkIssueAssignee(issue.getKey(), null); Optional<IssueDto> optionalIssueDto = dbClient.issueDao().selectByKey(session, issue.getKey()); assertThat(optionalIssueDto).isPresent(); assertThat(optionalIssueDto.get().getAssigneeUuid()).isNull(); assertThat(issueChangePostProcessor.wasCalled()).isFalse(); }
@Test public void assign_to_me_using_deprecated_me_param() { IssueDto issue = newIssueWithBrowsePermission(); ws.newRequest() .setParam("issue", issue.getKey()) .setParam("me", "true") .execute(); checkIssueAssignee(issue.getKey(), CURRENT_USER_UUID); Optional<IssueDto> optionalIssueDto = dbClient.issueDao().selectByKey(session, issue.getKey()); assertThat(optionalIssueDto).isPresent(); assertThat(optionalIssueDto.get().getAssigneeUuid()).isEqualTo(CURRENT_USER_UUID); }
@Test public void update_issue() { DefaultIssue issue = db.issues().insertIssue(i -> i.setSeverity(MAJOR)).toDefaultIssue(); IssueChangeContext context = IssueChangeContext.createUser(new Date(), "user_uuid"); issueFieldsSetter.setSeverity(issue, BLOCKER, context); underTest.saveIssue(db.getSession(), issue, context, null); IssueDto issueReloaded = dbClient.issueDao().selectByKey(db.getSession(), issue.key()).get(); assertThat(issueReloaded.getSeverity()).isEqualTo(BLOCKER); }
@Test public void assign_to_someone() { IssueDto issue = newIssueWithBrowsePermission(); UserDto arthur = insertUser("arthur"); ws.newRequest() .setParam("issue", issue.getKey()) .setParam("assignee", "arthur") .execute(); checkIssueAssignee(issue.getKey(), arthur.getUuid()); Optional<IssueDto> optionalIssueDto = dbClient.issueDao().selectByKey(session, issue.getKey()); assertThat(optionalIssueDto).isPresent(); assertThat(optionalIssueDto.get().getAssigneeUuid()).isEqualTo(arthur.getUuid()); assertThat(issueChangePostProcessor.wasCalled()).isFalse(); }
@Test public void nothing_to_do_when_new_assignee_is_same_as_old_one() { UserDto user = insertUser("Bob"); IssueDto issue = newIssue(user.getUuid()); setUserWithBrowsePermission(issue); ws.newRequest() .setParam("issue", issue.getKey()) .setParam("assignee", user.getLogin()) .execute(); IssueDto issueReloaded = dbClient.issueDao().selectByKey(db.getSession(), issue.getKey()).get(); assertThat(issueReloaded.getAssigneeUuid()).isEqualTo(user.getUuid()); assertThat(issueReloaded.getUpdatedAt()).isEqualTo(PAST); assertThat(issueReloaded.getIssueUpdateTime()).isEqualTo(PAST); }
@Test public void tags_are_stored_as_lowercase() { IssueDto issueDto = db.issues().insertIssue(newIssue().setTags(singletonList("old-tag"))); logIn(issueDto); call(issueDto.getKey(), "bug", "Convention"); IssueDto issueReloaded = dbClient.issueDao().selectByKey(db.getSession(), issueDto.getKey()).get(); assertThat(issueReloaded.getTags()).containsOnly("bug", "convention"); }
@Test public void empty_tags_are_ignored() { IssueDto issueDto = db.issues().insertIssue(newIssue().setTags(singletonList("old-tag"))); logIn(issueDto); call(issueDto.getKey(), "security", "", "convention"); IssueDto issueReloaded = dbClient.issueDao().selectByKey(db.getSession(), issueDto.getKey()).get(); assertThat(issueReloaded.getTags()).containsOnly("security", "convention"); }
@Test public void remove_existing_tags_when_value_is_empty_string() { IssueDto issueDto = db.issues().insertIssue(newIssue().setTags(singletonList("old-tag"))); logIn(issueDto); call(issueDto.getKey(), ""); IssueDto issueReloaded = dbClient.issueDao().selectByKey(db.getSession(), issueDto.getKey()).get(); assertThat(issueReloaded.getTags()).isEmpty(); }
@Test public void do_transition() { ComponentDto project = db.components().insertPrivateProject(); ComponentDto file = db.components().insertComponent(newFileDto(project)); RuleDefinitionDto rule = db.rules().insert(); IssueDto issue = db.issues().insert(rule, project, file, i -> i.setStatus(STATUS_OPEN).setResolution(null)); userSession.logIn().addProjectPermission(USER, project, file); call(issue.getKey(), "confirm"); verify(responseWriter).write(eq(issue.getKey()), preloadedSearchResponseDataCaptor.capture(), any(Request.class), any(Response.class)); verifyContentOfPreloadedSearchResponseData(issue); IssueDto issueReloaded = db.getDbClient().issueDao().selectByKey(db.getSession(), issue.getKey()).get(); assertThat(issueReloaded.getStatus()).isEqualTo(STATUS_CONFIRMED); assertThat(issueChangePostProcessor.calledComponents()).containsExactlyInAnyOrder(file); }
@Test public void set_tags_using_deprecated_key_param() { IssueDto issueDto = db.issues().insertIssue(newIssue().setTags(singletonList("old-tag"))); logIn(issueDto); ws.newRequest().setParam("key", issueDto.getKey()).setParam("tags", "bug").execute(); IssueDto issueReloaded = dbClient.issueDao().selectByKey(db.getSession(), issueDto.getKey()).get(); assertThat(issueReloaded.getTags()).containsOnly("bug"); }