/src/main/resources/com/onresolve/jira/groovy/test/TestUpdateBlockedIssues.groovy
Groovy | 99 lines | 79 code | 18 blank | 2 comment | 3 complexity | 5ade623f01d1fca154576134195891ed MD5 | raw file
- package com.onresolve.jira.groovy.test
-
- import com.atlassian.jira.bc.project.component.ProjectComponentManager
- import com.atlassian.jira.issue.Issue
- import com.atlassian.jira.issue.MutableIssue
- import com.atlassian.jira.issue.comments.Comment
- import com.atlassian.jira.issue.comments.CommentManager
- import com.atlassian.jira.issue.link.IssueLinkManager
- import com.atlassian.jira.project.version.VersionManager
- import com.onresolve.jira.groovy.canned.utils.CannedScriptUtils
- import com.onresolve.jira.groovy.canned.workflow.postfunctions.UpdateBlockedIssues
- import org.apache.log4j.Category
- import org.junit.After
- import org.junit.Before
- import org.junit.Test
- import static junit.framework.Assert.*
- import com.atlassian.jira.component.ComponentAccessor
- import com.atlassian.jira.issue.link.IssueLinkTypeManager
-
- class TestUpdateBlockedIssues extends BaseSubTaskTest {
-
- Category log = Category.getInstance(this.class)
- MutableIssue newIssue
- Issue issue
- IssueLinkManager linkMgr = componentManager.getIssueLinkManager()
- def blockLinkTypeId
- CommentManager commentManager = componentManager.getCommentManager()
- def issueLinkTypeManager = ComponentAccessor.getComponentOfType(IssueLinkTypeManager.class)
-
- @Before
- public void setUp() {
- log.debug ("setUp")
-
- log.debug ("issueType: ${issueType.getName()}")
- assertNotNull(project)
-
- issue = createIssue()
- newIssue = createIssue()
-
- // issue blocks newIssue
- def hasBlockers = issueLinkTypeManager.getIssueLinkTypes()*.name.contains("Blockers")
- if (!hasBlockers) {
- issueLinkTypeManager.createIssueLinkType("Blockers", "blocks", "is blocked by", null)
- }
-
- blockLinkTypeId = issueLinkTypeManager.getIssueLinkTypes().find{it.name == "Blockers"}.id
-
- linkMgr.createIssueLink(issue.id, newIssue.id, blockLinkTypeId, 0, adminUser)
- }
-
- private def Issue createIssue() {
- Issue issue = componentManager.getIssueFactory().getIssue()
- issue.setProject(project.getGenericValue())
-
- issue.setSummary "my summary"
- issue.setReporterId "admin"
- issue.setIssueType issueType.getGenericValue()
- issue.setPriorityId('2')
- ProjectComponentManager projectComponentManager = componentManager.getProjectComponentManager()
- VersionManager versionManager = componentManager.getVersionManager()
-
- issue.setComponents(projectComponentManager.findAllForProject(project.id).collect {it.genericValue})
- issue.setAffectedVersions(versionManager.getVersions(project.id))
- issue.setFixVersions(versionManager.getVersions(project.id))
-
- issueManager.createIssue(adminUser, issue);
- log.debug("Created issue: $issue")
- return issue
- }
-
- @After
- public void tearDown() {
- deleteIssue(issue)
- deleteIssue(newIssue)
- }
-
- @Test
- public void testUpdateIssues() {
-
- Map<String, Object> inputs = [
- issue: issue,
- (UpdateBlockedIssues.FIELD_LINK_TYPE) : "$blockLinkTypeId " + CannedScriptUtils.OUTWARD_FIELD_NAME,
- (UpdateBlockedIssues.FIELD_COMMENT): '$issue resolved',
- ] as Map<String, Object>
- log.debug ("inputs: $inputs")
-
- Map params = new UpdateBlockedIssues().doScript(inputs)
- Comment comment = commentManager.getComments(newIssue)?.first() as Comment
- assertNotNull (comment)
- assertEquals ("${issue.key} resolved", comment.body)
-
- // test that we don't get a comment going the other way with the cloners link
- def Long clonersLinkTypeId = issueLinkTypeManager.getIssueLinkTypes().find{it.name == "Cloners"}.id
- linkMgr.createIssueLink(newIssue.id, issue.id, clonersLinkTypeId, 0, adminUser)
- inputs['issue'] = newIssue
- new UpdateBlockedIssues().doScript(inputs)
- assertEquals ([], commentManager.getComments(issue))
- }
- }