PageRenderTime 39ms CodeModel.GetById 1ms RepoModel.GetById 0ms app.codeStats 0ms

/src/main/resources/com/onresolve/jira/groovy/test/TestCreateSubTask.groovy

https://bitbucket.org/sorin/jira-plugin-intellij
Groovy | 133 lines | 91 code | 29 blank | 13 comment | 1 complexity | 842a173a8c2f056632769b2379e188be MD5 | raw file
  1. package com.onresolve.jira.groovy.test
  2. import com.atlassian.jira.bc.project.component.ProjectComponentManager
  3. import com.atlassian.jira.issue.CustomFieldManager
  4. import com.atlassian.jira.issue.ModifiedValue
  5. import com.atlassian.jira.issue.MutableIssue
  6. import com.atlassian.jira.issue.fields.CustomField
  7. import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
  8. import com.atlassian.jira.issue.util.IssueChangeHolder
  9. import com.atlassian.jira.project.version.VersionManager
  10. import org.apache.log4j.Category
  11. import org.junit.After
  12. import org.junit.Before
  13. import org.junit.Test
  14. import static junit.framework.Assert.assertEquals
  15. import static junit.framework.Assert.assertNotNull
  16. import com.onresolve.jira.groovy.canned.workflow.postfunctions.CreateSubTask
  17. import com.atlassian.jira.issue.Issue
  18. import com.atlassian.jira.component.ComponentAccessor
  19. import com.atlassian.jira.ManagerFactory
  20. /**
  21. * User: jechlin2
  22. * Date: 13-Dec-2010
  23. * Time: 17:36:00
  24. */
  25. class TestCreateSubTask extends BaseSubTaskTest {
  26. Category log = Category.getInstance(this.class)
  27. MutableIssue newIssue
  28. @Before
  29. public void setUp() {
  30. tearDown()
  31. log.debug ("issueType: ${issueType.getName()}")
  32. assertNotNull(project)
  33. issue = componentManager.getIssueFactory().getIssue()
  34. issue.setProject(project.getGenericValue())
  35. issue.setSummary "my summary"
  36. issue.setAssigneeId "admin"
  37. issue.setReporterId "admin"
  38. issue.setIssueType issueType.getGenericValue()
  39. issue.setPriorityId('2')
  40. def issueSecurityLevelManager = ComponentAccessor.getIssueSecurityLevelManager()
  41. def issueSecuritySchemeManager = ManagerFactory.getIssueSecuritySchemeManager()
  42. def securitySchemes = issueSecuritySchemeManager.getSchemes(project.genericValue)
  43. assert (securitySchemes)
  44. def securityScheme = securitySchemes?.first()
  45. // todo: we never get here if no sec scheme
  46. // todo: all security levels should have the Anyone permission
  47. assertNotNull("Define a security scheme with at least a Private level", securityScheme)
  48. def secLevels = issueSecurityLevelManager.getSchemeIssueSecurityLevels(securityScheme.getLong("id"))
  49. def levelPrivate = secLevels.find {it.name == "Private"}
  50. assertNotNull(levelPrivate)
  51. issue.setSecurityLevel(levelPrivate)
  52. ProjectComponentManager projectComponentManager = componentManager.getProjectComponentManager()
  53. VersionManager versionManager = componentManager.getVersionManager()
  54. issue.setComponents(projectComponentManager.findAllForProject(project.id).collect{it.genericValue})
  55. issue.setAffectedVersions(versionManager.getVersions(project.id))
  56. issue.setFixVersions(versionManager.getVersions(project.id))
  57. issueManager.createIssue(adminUser, issue);
  58. log.debug ("Created issue: $issue")
  59. }
  60. // @After
  61. public void tearDown() {
  62. deleteAllIssues()
  63. }
  64. @Test
  65. public void testCreateSubtask() {
  66. CustomFieldManager customFieldManager = componentManager.getCustomFieldManager()
  67. CustomField cf = customFieldManager.getCustomFieldObjectByName('GlobalCfTtype')
  68. assertNotNull (cf)
  69. IssueChangeHolder changeHolder = new DefaultIssueChangeHolder();
  70. cf.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(cf), "new cf value"),changeHolder);
  71. Map<String, Object> inputs = [
  72. issue: issue,
  73. (CreateSubTask.FIELD_SUBTASK_SUMMARY): 'abcd',
  74. (CreateSubTask.FIELD_TARGET_ISSUE_TYPE): '5', // subtask
  75. // todo: we should test additional actions, eg https://studio.plugins.atlassian.com/wiki/display/GRV/Script+Runner?focusedCommentId=66357419#comment-66357419
  76. // (CreateSubTask.FIELD_ADDITIONAL_SCRIPT): 'issue.summary = "Create subtask for " + originalIssue.summary', // subtask
  77. ] as Map<String, Object>
  78. log.debug ("inputs: $inputs")
  79. Map params = new CreateSubTask().doScript(inputs)
  80. assertNotNull(params['newIssue'])
  81. newIssue = params['newIssue'] as MutableIssue
  82. assertNotNull(newIssue)
  83. assertEquals("Private", newIssue.securityLevel?.get("name"))
  84. junit.framework.Assert.assertEquals (1, issue.getSubTaskObjects().size())
  85. Issue firstSub = issue.getSubTaskObjects().asList().first() as Issue
  86. log.debug("firstSub: $firstSub")
  87. // create another sub-task
  88. inputs = [
  89. issue: issue,
  90. (CreateSubTask.FIELD_SUBTASK_SUMMARY): 'efgh',
  91. (CreateSubTask.FIELD_TARGET_ISSUE_TYPE): '5', // subtask
  92. (CreateSubTask.FIELD_SUBTASK_ACTION) : '3 Reopen'
  93. ]
  94. params = new CreateSubTask().doScript(inputs)
  95. junit.framework.Assert.assertEquals (2, issue.getSubTaskObjects().size())
  96. MutableIssue secondSub = issue.getSubTaskObjects().asList().last() as MutableIssue
  97. // resolve the child and make sure the parent reopens it - as though parent was being transitioned to Open
  98. resolveIssue(secondSub)
  99. params = new CreateSubTask().doScript(inputs)
  100. secondSub = issue.getSubTaskObjects().asList().last() as MutableIssue
  101. // note if the reopened state is removed this will be Open, not reopened.
  102. assert ['Open', 'Reopened'].contains(secondSub.statusObject.name)
  103. }
  104. }