Устранение проблемы при обновлении тестового набора TM4J - malikovalibek/groovyForJira GitHub Wiki
Обзор При обновлении статуса переносите любые проблемы, связанные с тестовым примером.
пример Я работаю в группе контроля качества и, когда статус тестового случая меняется с «В черновике» на «Утверждено», я хочу обновить связанные истории, чтобы команда могла видеть, что тест готов к использованию.
@WithPlugin("com.kanoah.test-manager") import com.onresolve.scriptrunner.runner.customisers.WithPlugin import com.adaptavist.tm4j.api.event.testcase.TestCaseChangedEvent import com.adaptavist.tm4j.api.service.status.StatusService import com.adaptavist.tm4j.api.service.testcase.TestCaseService import com.adaptavist.tm4j.api.service.tracelink.TraceLinkService import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.user.ApplicationUser import com.opensymphony.workflow.loader.ActionDescriptor import com.atlassian.jira.issue.Issue
def testCaseService = ComponentAccessor.getOSGiComponentInstanceOfType(TestCaseService) def statusService = ComponentAccessor.getOSGiComponentInstanceOfType(StatusService) def currentUser = ComponentAccessor.jiraAuthenticationContext.loggedInUser def event = event as TestCaseChangedEvent final testCaseId = event.id final testCaseModel = testCaseService.getTestCaseModelById(currentUser.key, testCaseId).result final testCaseStatusId = testCaseModel.statusId final testCaseStatusModel = statusService.getTestCaseStatusModelById(currentUser.key, testCaseStatusId).result
final doneAction = "Done" final inProgressAction = "In Progress" final toDoAction = "To Do"
if (testCaseStatusModel.isDeprecated()) { issueTransition(doneAction, currentUser, testCaseId) } else if (testCaseStatusModel.isDraft()) { issueTransition(toDoAction, currentUser, testCaseId) } else { issueTransition(inProgressAction, currentUser, testCaseId) }
def issueTransition(String actionName, ApplicationUser currentUser, Long testCaseId) { def issueManager = ComponentAccessor.issueManager def issueService = ComponentAccessor.issueService def traceLinkService = ComponentAccessor.getOSGiComponentInstanceOfType(TraceLinkService) def traceLinks = traceLinkService.getTraceLinkModelsByTestCaseId(currentUser.key, testCaseId).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() final action = getAction(actionName, issue) if (!action) { 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 } }