js/test-management-scenarios/calculate-tms-statistics.js (54 lines of code) (raw):

/** * This is a template for an on-change rule. This rule defines what * happens when a change is applied to an issue. * * For details, read the Quick Start Guide: * https://www.jetbrains.com/help/youtrack/incloud/2020.3/Quick-Start-Guide-Workflows-JS.html */ var entities = require('@jetbrains/youtrack-scripting-api/entities'); var utils = require('./utils'); exports.rule = entities.Issue.onChange({ title: 'Calculate TMS Statistics', guard: function(ctx) { var issue = ctx.issue; return issue.isChanged(ctx.Status) && (issue.isReported) && (issue.Type.name == ctx.Type.TestExecution.name); }, action: function(ctx) { var issue = ctx.issue; if (!issue.links['subtask of'].isEmpty()) { var parent = issue.links['subtask of'].first(); utils.calculateStatuses(parent); } }, requirements: { Total: { type: entities.Field.integerType, name: 'Total number of test cases' }, TotalFailed: { type: entities.Field.integerType, name: 'Number of failed test cases' }, TotalPassed: { type: entities.Field.integerType, name: 'Number of passed test cases' }, Status: { type: entities.EnumField.fieldType, InProgress: { name: 'No Run' }, Passed: { name: 'Passed' }, Failed: { name: 'Failed' }, }, Type: { type: entities.EnumField.fieldType, TestExecution: { name: "Test Case Execution" } }, Subtask: { type: entities.IssueLinkPrototype, name: 'Subtask', inward: 'subtask of', outward: 'parent for' }, } });