@elisra-devops/docgen-data-provider 1.103.0 → 1.104.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -116,6 +116,7 @@ export default class ResultDataProvider {
116
116
  * 3) `System.Description` / `Description` from work-item field list (`workItemFields`)
117
117
  */
118
118
  private buildMewpTestCaseDescriptionMap;
119
+ private enrichMewpTestCaseMapsFromLatestWorkItems;
119
120
  private extractMewpTestCaseId;
120
121
  private buildTestCaseStepsXmlMap;
121
122
  private extractStepsXmlFromTestCaseItem;
@@ -534,9 +534,14 @@ class ResultDataProvider {
534
534
  }
535
535
  }
536
536
  const preloadedStepXmlCount = stepsXmlByTestCase.size;
537
+ const latestWorkItemMapStats = await this.enrichMewpTestCaseMapsFromLatestWorkItems(projectName, [...allTestCaseIds], stepsXmlByTestCase, testCaseTitleMap, testCaseDescriptionMap);
537
538
  const fallbackStepLoadStats = await this.enrichMewpStepsXmlMapFromWorkItems(projectName, [...allTestCaseIds], stepsXmlByTestCase);
538
539
  logger_1.default.info(`MEWP internal validation steps source summary: testCases=${allTestCaseIds.size} ` +
539
- `fromSuitePayload=${preloadedStepXmlCount} fromWorkItemFallback=${fallbackStepLoadStats.loadedFromFallback} ` +
540
+ `fromSuitePayload=${preloadedStepXmlCount} ` +
541
+ `fromLatestWorkItem=${latestWorkItemMapStats.stepsLoadedFromLatest} ` +
542
+ `titleFromLatest=${latestWorkItemMapStats.titleLoadedFromLatest} ` +
543
+ `descriptionFromLatest=${latestWorkItemMapStats.descriptionLoadedFromLatest} ` +
544
+ `fromWorkItemFallback=${fallbackStepLoadStats.loadedFromFallback} ` +
540
545
  `stepsXmlAvailable=${stepsXmlByTestCase.size} unresolved=${fallbackStepLoadStats.unresolvedCount}`);
541
546
  const validL2BaseKeys = new Set([...requirementFamilies.keys()]);
542
547
  const diagnostics = {
@@ -1290,6 +1295,63 @@ class ResultDataProvider {
1290
1295
  }
1291
1296
  return map;
1292
1297
  }
1298
+ async enrichMewpTestCaseMapsFromLatestWorkItems(projectName, testCaseIds, stepsXmlByTestCase, testCaseTitleMap, testCaseDescriptionMap) {
1299
+ var _a, _b;
1300
+ const uniqueIds = [...new Set(testCaseIds)]
1301
+ .map((id) => Number(id))
1302
+ .filter((id) => Number.isFinite(id) && id > 0);
1303
+ if (uniqueIds.length === 0) {
1304
+ return {
1305
+ stepsLoadedFromLatest: 0,
1306
+ titleLoadedFromLatest: 0,
1307
+ descriptionLoadedFromLatest: 0,
1308
+ };
1309
+ }
1310
+ let stepsLoadedFromLatest = 0;
1311
+ let titleLoadedFromLatest = 0;
1312
+ let descriptionLoadedFromLatest = 0;
1313
+ try {
1314
+ const latestWorkItems = await this.fetchWorkItemsByIds(projectName, uniqueIds, false);
1315
+ for (const workItem of latestWorkItems || []) {
1316
+ const id = Number((workItem === null || workItem === void 0 ? void 0 : workItem.id) || 0);
1317
+ if (!Number.isFinite(id) || id <= 0)
1318
+ continue;
1319
+ const fields = (workItem === null || workItem === void 0 ? void 0 : workItem.fields) || {};
1320
+ const latestStepsXml = this.extractStepsXmlFromFieldsMap(fields);
1321
+ if (latestStepsXml) {
1322
+ const previous = String(stepsXmlByTestCase.get(id) || '');
1323
+ if (previous !== latestStepsXml) {
1324
+ stepsLoadedFromLatest += 1;
1325
+ }
1326
+ stepsXmlByTestCase.set(id, latestStepsXml);
1327
+ }
1328
+ const latestTitle = this.toMewpComparableText((_a = this.getFieldValueByName(fields, 'System.Title')) !== null && _a !== void 0 ? _a : this.getFieldValueByName(fields, 'Title'));
1329
+ if (latestTitle) {
1330
+ const previous = String(testCaseTitleMap.get(id) || '');
1331
+ if (previous !== latestTitle) {
1332
+ titleLoadedFromLatest += 1;
1333
+ }
1334
+ testCaseTitleMap.set(id, latestTitle);
1335
+ }
1336
+ const latestDescription = this.toMewpComparableText((_b = this.getFieldValueByName(fields, 'System.Description')) !== null && _b !== void 0 ? _b : this.getFieldValueByName(fields, 'Description'));
1337
+ if (latestDescription) {
1338
+ const previous = String(testCaseDescriptionMap.get(id) || '');
1339
+ if (previous !== latestDescription) {
1340
+ descriptionLoadedFromLatest += 1;
1341
+ }
1342
+ testCaseDescriptionMap.set(id, latestDescription);
1343
+ }
1344
+ }
1345
+ }
1346
+ catch (error) {
1347
+ logger_1.default.warn(`MEWP internal validation: failed to load latest test-case fields: ${(error === null || error === void 0 ? void 0 : error.message) || error}`);
1348
+ }
1349
+ return {
1350
+ stepsLoadedFromLatest,
1351
+ titleLoadedFromLatest,
1352
+ descriptionLoadedFromLatest,
1353
+ };
1354
+ }
1293
1355
  extractMewpTestCaseId(runResult) {
1294
1356
  var _a;
1295
1357
  const testCaseId = Number((runResult === null || runResult === void 0 ? void 0 : runResult.testCaseId) || ((_a = runResult === null || runResult === void 0 ? void 0 : runResult.testCase) === null || _a === void 0 ? void 0 : _a.id) || 0);