PageRenderTime 46ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

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

https://bitbucket.org/sorin/scriptrunner-public-sorin
Groovy | 188 lines | 153 code | 25 blank | 10 comment | 6 complexity | b67616d59c82972970f8ba59cc1edea1 MD5 | raw file
  1. package com.onresolve.jira.groovy.test
  2. import org.apache.log4j.Category
  3. import com.atlassian.jira.util.ImportUtils
  4. import com.atlassian.jira.workflow.WorkflowTransitionUtilImpl
  5. import com.atlassian.jira.util.JiraUtils
  6. import com.atlassian.jira.workflow.WorkflowTransitionUtil
  7. import com.atlassian.jira.issue.MutableIssue
  8. import com.atlassian.jira.issue.Issue
  9. import com.atlassian.jira.ManagerFactory
  10. import com.atlassian.jira.issue.IssueManager
  11. import com.atlassian.jira.issue.issuetype.IssueType
  12. import com.atlassian.jira.config.ConstantsManager
  13. import com.atlassian.jira.project.Project
  14. import com.atlassian.jira.ComponentManager
  15. import com.atlassian.core.action.ActionUtils
  16. import com.atlassian.jira.action.ActionNames
  17. import com.atlassian.core.ofbiz.CoreFactory
  18. import webwork.dispatcher.ActionResult
  19. import com.atlassian.jira.issue.CustomFieldManager
  20. import com.atlassian.jira.bc.project.component.ProjectComponentManager
  21. import com.atlassian.jira.project.version.VersionManager
  22. import com.atlassian.jira.issue.link.IssueLinkManager
  23. import com.atlassian.jira.issue.comments.CommentManager
  24. import com.atlassian.jira.project.ProjectManager
  25. import com.atlassian.jira.user.util.UserUtil
  26. import com.atlassian.crowd.embedded.api.User
  27. import com.atlassian.jira.component.ComponentAccessor
  28. import com.atlassian.event.api.EventPublisher
  29. import com.onresolve.jira.groovy.ScriptManagerImpl
  30. import static junit.framework.Assert.assertNotNull
  31. import com.atlassian.jira.jql.builder.JqlQueryBuilder
  32. import com.atlassian.query.Query
  33. import com.atlassian.jira.issue.search.SearchRequest
  34. import com.atlassian.jira.issue.search.SearchResults
  35. import com.atlassian.jira.web.bean.PagerFilter
  36. import com.atlassian.jira.issue.search.SearchProvider
  37. import com.atlassian.jira.issue.label.LabelManager
  38. import com.atlassian.jira.bc.JiraServiceContext
  39. import static junit.framework.Assert.assertFalse
  40. import com.atlassian.jira.issue.search.SearchRequestManager
  41. import com.atlassian.jira.bc.filter.SearchRequestService
  42. import com.atlassian.jira.issue.index.IssueIndexManager
  43. /**
  44. * User: jechlin2
  45. * Date: 20/12/10
  46. * Time: 14:49
  47. */
  48. // todo: the impl is because classes don't seem reloable
  49. class BaseSubTaskTest implements GroovyObject {
  50. Category log = Category.getInstance(this.class)
  51. UserUtil userUtil = ComponentManager.getInstance().getUserUtil()
  52. User adminUser = userUtil.getUser("admin")
  53. MutableIssue issue
  54. ComponentManager componentManager = ComponentManager.getInstance()
  55. Project project = componentManager.getProjectManager().getProjectObjByKey('JRA')
  56. ConstantsManager constantsManager = componentManager.getConstantsManager()
  57. IssueType issueType = constantsManager.getIssueTypeObject('1')
  58. IssueManager issueManager = ManagerFactory.getIssueManager()
  59. CustomFieldManager customFieldManager = componentManager.getCustomFieldManager()
  60. ProjectComponentManager projectComponentManager = componentManager.getProjectComponentManager()
  61. VersionManager versionManager = componentManager.getVersionManager()
  62. IssueLinkManager issueLinkManager = componentManager.getIssueLinkManager()
  63. CommentManager commentManager = componentManager.getCommentManager()
  64. ProjectManager projectManager = componentManager.getProjectManager()
  65. def labelManager = ComponentManager.getComponentInstanceOfType(LabelManager.class)
  66. def searchRequestManager = componentManager.getSearchRequestManager()
  67. def searchRequestService = componentManager.getSearchRequestService()
  68. IssueIndexManager indexManager = ComponentManager.getInstance().getIndexManager()
  69. public def resolveIssue(MutableIssue theIssue) {
  70. resolveIssue(theIssue, '1')
  71. }
  72. public def resolveIssue(MutableIssue theIssue, String resolution) {
  73. boolean wasIndexing = ImportUtils.isIndexIssues();
  74. ImportUtils.setIndexIssues(true);
  75. WorkflowTransitionUtil workflowTransitionUtil = (WorkflowTransitionUtil) JiraUtils.loadComponent(WorkflowTransitionUtilImpl.class);
  76. workflowTransitionUtil.setIssue(theIssue);
  77. workflowTransitionUtil.setUsername(adminUser.getName());
  78. // assume standard workflow
  79. workflowTransitionUtil.setAction(5);
  80. workflowTransitionUtil.setParams([resolution: resolution])
  81. // validate and transition issue
  82. workflowTransitionUtil.validate();
  83. workflowTransitionUtil.progress();
  84. // set indexing back to previous
  85. ImportUtils.setIndexIssues(wasIndexing)
  86. }
  87. public Issue createSubTask(MutableIssue parent) {
  88. MutableIssue subtask = componentManager.getIssueFactory().getIssue()
  89. subtask.setProject(project.getGenericValue())
  90. subtask.setSummary "subtask summary"
  91. subtask.setReporterId "admin"
  92. subtask.setIssueType constantsManager.getAllIssueTypeObjects().find {it.name == 'Sub-task'}.genericValue
  93. subtask.setAssigneeId "admin"
  94. subtask.setParentId(parent.id)
  95. issueManager.createIssue(adminUser, subtask);
  96. log.debug(subtask.id)
  97. // note: for some reason we seem to need both the setParent, and creating a subtask link
  98. componentManager.getSubTaskManager().createSubTaskIssueLink(parent, subtask, adminUser)
  99. log.debug "Created subtask ${subtask.getKey()} as child of ${parent.getKey()}"
  100. assert subtask.isSubTask()
  101. subtask
  102. }
  103. public def deleteIssue(Issue theIssue) {
  104. log.debug("Delete issue $theIssue")
  105. if (theIssue) {
  106. Map parameters = [
  107. issue: theIssue.getGenericValue(),
  108. remoteUser: userUtil.getUser("admin"),
  109. dispatchEvent: false,
  110. permissionOverride: true,
  111. ]
  112. ActionResult aResult = CoreFactory.getActionDispatcher().execute(ActionNames.ISSUE_DELETE, parameters);
  113. ActionUtils.checkForErrors(aResult)
  114. }
  115. }
  116. def getScriptManager() {
  117. def eventPublisher = ComponentAccessor.getComponentOfType(EventPublisher.class)
  118. new ScriptManagerImpl(eventPublisher)
  119. }
  120. public deleteAllIssues() {
  121. deleteAllIssues(project)
  122. }
  123. public deleteAllIssues(Project fromProject) {
  124. JqlQueryBuilder jqlQueryBuilder = JqlQueryBuilder.newBuilder()
  125. Query query = jqlQueryBuilder.where().project(fromProject.id).buildQuery()
  126. log.debug("Execute query: " + query.toString())
  127. SearchRequest sr = new SearchRequest(query)
  128. SearchProvider searchProvider = componentManager.getSearchProvider()
  129. SearchResults results = searchProvider.search(sr.getQuery(), componentManager.getJiraAuthenticationContext().getUser(), PagerFilter.getUnlimitedFilter())
  130. results.getIssues().each {Issue issue ->
  131. def theIssue = issueManager.getIssueObject(issue.id)
  132. if (theIssue) {
  133. deleteIssue(theIssue)
  134. }
  135. }
  136. }
  137. public void createIssue(String assigneeId, Project overrideProject = null) {
  138. log.debug("setUp")
  139. assertNotNull(project)
  140. issue = componentManager.getIssueFactory().getIssue()
  141. issue.setProject(overrideProject?.genericValue ?: project.getGenericValue())
  142. if (overrideProject) {
  143. issue.affectedVersions = versionManager.getVersions(overrideProject.id)
  144. }
  145. issue.setSummary "ss"
  146. issue.setReporterId "admin"
  147. issue.setIssueType issueType.getGenericValue()
  148. if (assigneeId) {
  149. issue.setAssigneeId(assigneeId)
  150. }
  151. issue.setPriorityId('2')
  152. issueManager.createIssue(adminUser, issue);
  153. log.debug("Created issue: $issue")
  154. }
  155. public def deleteFilter(JiraServiceContext ctx, SearchRequest sr) {
  156. searchRequestService.validateForDelete(ctx, sr.id)
  157. if (ctx.errorCollection.hasAnyErrors()) {
  158. log.warn(ctx.errorCollection)
  159. }
  160. assertFalse(ctx.errorCollection.hasAnyErrors())
  161. searchRequestService.deleteFilter(ctx, sr.id)
  162. }
  163. }