Workflow клонирования задачи с другим типом
Доброго дня!
Имею сценарий, который копирует Test Run.
И хочу его переделать так, чтобы из Test Suite можно было получить задачу с типом Test Run. Пhи этом дочерние задачи Test Suite также прикреплять к новому Test Run связью Assigned Test case or test suite.
Помогите, пожалуйста, справиться с этим.
var workflow = require('@jetbrains/youtrack-scripting-api/workflow'); var entities = require('@jetbrains/youtrack-scripting-api/entities'); var utils = require('./utils'); exports.rule = entities.Issue.action({ title: 'Create Test Run copy', command: 'Test Run Creation', guard: function(ctx) { return ctx.issue.isReported && (ctx.issue.Type.name == ctx.Type.TestRun.name); }, action: function(ctx) { var issue = ctx.issue; var TestRunCopy = issue.copy(issue.project); TestRunCopy.Status = ctx.Status.InProgress; var oldTestList = issue.links[ctx.Subtask.outward]; oldTestList.forEach(function(v) { var newTest = v.copy(v.project); newTest.Status = ctx.Status.InProgress; newTest.links[ctx.Subtask.inward].delete(issue); newTest.links[ctx.Subtask.inward].add(TestRunCopy); }); utils.resetStatuses(issue, TestRunCopy); var newTestRunLink = '<a href="' + TestRunCopy.url + '"> ' + TestRunCopy.id + '</a>'; var message = 'New Test Run has been created ' + newTestRunLink + '.'; workflow.message(message); }, requirements: { Execution: { type: entities.IssueLinkPrototype, name: 'Execution', inward: 'Execution', outward: 'Assigned Test case or test suite' }, Subtask: { type: entities.IssueLinkPrototype, name: 'Subtask', inward: 'subtask of', outward: 'parent for' }, Type: { type: entities.EnumField.fieldType, TestRun: { name: "Test Run" }, }, Status: { type: entities.EnumField.fieldType, InProgress: { name: 'No Run' }, } } });
Please sign in to leave a comment.
Добрый день!
Спасибо за обращение. Расскажите, пожалуйста, чем отличаются типы Test Run и Test Suite с точки зрения набора полей? Если ничем, то вы можете добавить в код строчки, которые поменяют тип скопированной задачи (за него у вас отвечает поле ctx.issue.Type), а затем правильно прилинковать задачи (пример в вашем коде есть).
Расскажите, пожалуйста, что именно не получается и с чем нужна помощь?
Итого работает следующее:
var workflow = require('@jetbrains/youtrack-scripting-api/workflow'); var entities = require('@jetbrains/youtrack-scripting-api/entities'); var utils = require('./utils'); exports.rule = entities.Issue.action({ // TODO: give the rule a human-readable title title: 'Create-test-run-from-suite', // TODO: define the custom command command: 'create-test-run-from-suite', guard: (ctx) => { // TODO: define the condition that must be met to enable the custom command return ctx.issue.isReported && (ctx.issue.Type.name == "Test Suite"); }, action: function(ctx) { var issue = ctx.issue; var TestRunCopy = issue.copy(issue.project); TestRunCopy.Type = ctx.Type.TestRun; TestRunCopy.Status = ctx.Status.InProgress; var oldTestList = issue.links[ctx.Subtask.outward]; oldTestList.forEach(function(v) { var newTest = v.copy(v.project); newTest.Type = ctx.Type.TestCaseExecution; newTest.Status = ctx.Status.InProgress; newTest.links[ctx.Subtask.inward].delete(issue); newTest.links[ctx.Subtask.inward].add(TestRunCopy); newTest.summary = "[TEST_CASE_EXECUTION" + "] [" + newTest.summary + "]"; }); utils.resetStatuses(issue, TestRunCopy); TestRunCopy.removeTag("Test Suite"); var newTestRunLink = '<a href="' + TestRunCopy.url + '"> ' + TestRunCopy.id + '</a>'; var message = 'New Test Run has been created ' + newTestRunLink + '.'; workflow.message(message); }, requirements: { Execution: { type: entities.IssueLinkPrototype, name: 'Execution', inward: 'Execution', outward: 'Assigned Test case or test suite' }, Subtask: { type: entities.IssueLinkPrototype, name: 'Subtask', inward: 'subtask of', outward: 'parent for' }, Type: { type: entities.EnumField.fieldType, TestSuite: { name: "Test Suite" }, TestRun: { name: "Test Run" }, TestCaseExecution: { name: "Test Case Execution" }, }, Status: { type: entities.EnumField.fieldType, InProgress: { name: 'No Run' }, } } });Спасибо, что поделились решением, оно может помочь кому-то еще. Хорошего дня!