use of com.epam.pipeline.controller.vo.IssueCommentVO in project cloud-pipeline by epam.
the class IssueManager method updateComment.
/**
* Updates comment specified by ID. If issue was closed or issue doesn't exist or comment doesn't exist an error
* will be thrown. If text for comment is empty exception will be thrown.
* @param issueId issue's ID
* @param commentId comment's ID
* @param commentVO comment's text
* @return updated {@link IssueComment}
*/
@Transactional(propagation = Propagation.REQUIRED)
public IssueComment updateComment(Long issueId, Long commentId, IssueCommentVO commentVO) {
IssueComment issueComment = loadComment(issueId, commentId);
loadIssueAndCheckIfNotClosed(issueId);
String text = commentVO.getText();
ensureNotEmptyString(text, MessageConstants.ERROR_INVALID_COMMENT_TEXT);
issueComment.setText(text);
commentDao.updateComment(issueComment);
// Find the attachments that were removed during update and delete them
HashSet<Attachment> newAttachments = new HashSet<>(commentVO.getAttachments());
List<Attachment> allAttachments = attachmentDao.loadAttachmentsByCommentId(commentId);
List<Attachment> toDelete = allAttachments.stream().filter(a -> !newAttachments.contains(a)).collect(Collectors.toList());
attachmentFileManager.deleteAttachments(toDelete);
// New attachments might be added so we need to link them to this comment
commentVO.getAttachments().forEach(a -> attachmentDao.updateAttachmentCommentId(a.getId(), commentId));
return issueComment;
}
use of com.epam.pipeline.controller.vo.IssueCommentVO in project cloud-pipeline by epam.
the class IssueManagerTest method testLoadIssueWithComments.
@Test
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
public void testLoadIssueWithComments() {
Issue issue = registerIssue();
Long issueId = issue.getId();
IssueCommentVO commentVO1 = getCommentVO(COMMENT_TEXT);
IssueCommentVO commentVO2 = getCommentVO(COMMENT_TEXT2);
issueManager.createComment(issueId, commentVO1);
issueManager.createComment(issueId, commentVO2);
assertEquals(2, issueManager.loadIssue(issueId).getComments().size());
}
use of com.epam.pipeline.controller.vo.IssueCommentVO in project cloud-pipeline by epam.
the class IssueManagerTest method createCommentWithAttachments.
@Test
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Throwable.class)
public void createCommentWithAttachments() {
Issue issue = registerIssue();
Long issueId = issue.getId();
IssueCommentVO commentVO = getCommentVO(COMMENT_TEXT);
commentVO.setAttachments(Collections.singletonList(testAttachment));
IssueComment comment = issueManager.createComment(issueId, commentVO);
IssueComment loaded = issueManager.loadComment(issueId, comment.getId());
Issue loadedIssue = issueManager.loadIssue(issueId);
assertEquals(1, loadedIssue.getComments().stream().mapToLong(c -> c.getAttachments().size()).sum());
assertFalse(loaded.getAttachments().isEmpty());
issueManager.deleteIssue(issueId);
assertFalse(attachmentDao.load(testAttachment.getId()).isPresent());
}
use of com.epam.pipeline.controller.vo.IssueCommentVO in project cloud-pipeline by epam.
the class IssueManagerTest method testDeleteIssueWithComment.
@Test(expected = IllegalArgumentException.class)
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
public void testDeleteIssueWithComment() {
Issue issue = registerIssue();
Long issueId = issue.getId();
IssueCommentVO commentVO = getCommentVO(COMMENT_TEXT);
issueManager.createComment(issueId, commentVO);
issueManager.deleteIssue(issueId);
issueManager.loadIssue(issueId);
}
use of com.epam.pipeline.controller.vo.IssueCommentVO in project cloud-pipeline by epam.
the class IssueApiServiceTest method testUpdateCommentAccessDeniedForNotOwner.
@WithMockUser(username = CAN_READ_USER)
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
@Test(expected = AccessDeniedException.class)
public void testUpdateCommentAccessDeniedForNotOwner() {
IssueCommentVO issueCommentVO = new IssueCommentVO();
issueCommentVO.setText(COMMENT_TEXT);
issueApiService.updateComment(createdIssue.getId(), createdIssueComment.getId(), issueCommentVO);
}
Aggregations