Устранение проблемы при обновлении выполнения теста TM4J - malikovalibek/groovyForJira GitHub Wiki

Обзор Устранение любых проблем, связанных с выполнением теста, при обновлении статуса.

пример Я работаю в группе контроля качества и, когда статус выполнения теста меняется с «Неудача» на «Пройден», я хочу обновить связанные дефекты, чтобы группа разработчиков могла проверить существующие дефекты перед выпуском.

@WithPlugin("com.kanoah.test-manager") import com.onresolve.scriptrunner.runner.customisers.WithPlugin import com.atlassian.jira.component.ComponentAccessor import com.adaptavist.tm4j.api.event.testexecution.TestExecutionChangedEvent import com.adaptavist.tm4j.api.service.testexecution.TestExecutionService import com.adaptavist.tm4j.api.service.status.StatusService import com.adaptavist.tm4j.api.service.tracelink.TraceLinkService import com.atlassian.jira.user.ApplicationUser import com.opensymphony.workflow.loader.ActionDescriptor import com.atlassian.jira.issue.Issue

def testExecutionService = ComponentAccessor.getOSGiComponentInstanceOfType(TestExecutionService) def statusService = ComponentAccessor.getOSGiComponentInstanceOfType(StatusService) def currentUser = ComponentAccessor.jiraAuthenticationContext.loggedInUser def event = event as TestExecutionChangedEvent def testExecutionId = event.id def testExecutionModel = testExecutionService.getTestExecutionModelById(currentUser.key, testExecutionId).result def testExecutionStatusId = testExecutionModel.statusId def testExecutionStatusResult = statusService.getTestExecutionStatusModelById(currentUser.key, testExecutionStatusId) def testExecutionStatusModel = testExecutionStatusResult.result

def doneAction = "Done" def inProgressAction = "In Progress" def toDoAction = "To Do"

if (testExecutionStatusModel.isPass()) { issueTransition(doneAction, currentUser, testExecutionId) } else if (testExecutionStatusModel.isInProgress()) { issueTransition(inProgressAction, currentUser, testExecutionId) } else { issueTransition(toDoAction, currentUser, testExecutionId) }

def issueTransition(String actionName, ApplicationUser currentUser, Long testExecutionId) { def issueManager = ComponentAccessor.issueManager def issueService = ComponentAccessor.issueService def traceLinkService = ComponentAccessor.getOSGiComponentInstanceOfType(TraceLinkService) def traceLinks = traceLinkService.getTraceLinkModelsByTestExecutionId(currentUser.key, testExecutionId).result def traceLinksWithIssues = traceLinks.findAll { tl -> tl.issueId != null } def issueIds = traceLinksWithIssues*.issueId issueIds.each { issueId -> def issue = issueManager.getIssueObject(issueId) def issueInputParameters = issueService.newIssueInputParameters() def action = getAction(actionName, issue) if (action == null) { throw new RuntimeException("Action '" + actionName + "' Not Found") } def validateTransition = issueService.validateTransition(currentUser, issue.id, action.id, issueInputParameters) if (validateTransition.isValid()) { issueService.transition(currentUser, validateTransition) } } }

ActionDescriptor getAction(String actionName, Issue issue) { def workflowManager = ComponentAccessor.workflowManager.getWorkflow(issue) def actions = workflowManager.getActionsByName(actionName) actions.find { action -> action.name == actionName } }