From 1241bbe622fd506f1c7cccbe44c98744c21db591 Mon Sep 17 00:00:00 2001 From: Mike Phares Date: Mon, 21 Oct 2024 13:58:48 -0700 Subject: [PATCH] Changed to long types 122517 --- .../FileHandlers/Markdown/ProcessData.cs | 97 ++++++++++- Adaptation/FileHandlers/json/FileRead.cs | 13 +- .../json/StaticSite/html/122517.html | 65 ++++++++ .../FileHandlers/json/StaticSite/js/122517.js | 157 ++++++++++++++++++ .../json/StaticSite/styles/122517.css | 12 ++ .../FileHandlers/json/WorkItems/Fields.cs | 19 ++- .../FileHandlers/json/WorkItems/WorkItem.cs | 28 ++-- .../Production/v2.57.0/MESAFIBACKLOG.cs | 10 ++ 8 files changed, 368 insertions(+), 33 deletions(-) create mode 100644 Adaptation/FileHandlers/json/StaticSite/html/122517.html create mode 100644 Adaptation/FileHandlers/json/StaticSite/js/122517.js create mode 100644 Adaptation/FileHandlers/json/StaticSite/styles/122517.css diff --git a/Adaptation/FileHandlers/Markdown/ProcessData.cs b/Adaptation/FileHandlers/Markdown/ProcessData.cs index 1ed9e44..74bd0fe 100644 --- a/Adaptation/FileHandlers/Markdown/ProcessData.cs +++ b/Adaptation/FileHandlers/Markdown/ProcessData.cs @@ -3,6 +3,7 @@ using Adaptation.Shared; using Adaptation.Shared.Duplicator; using Adaptation.Shared.Methods; using log4net; +using Microsoft.VisualStudio.Services.Common; using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -62,9 +63,21 @@ public class ProcessData : IProcessData if (!Directory.Exists(destinationDirectory)) _ = Directory.CreateDirectory(destinationDirectory); string json = File.ReadAllText(logistics.ReportFullPath); - WorkItem[]? workItems = JsonSerializer.Deserialize(json); - if (workItems is null) - throw new Exception(nameof(workItems)); + // WorkItem[]? workItems = JsonSerializer.Deserialize(json); + // if (workItems is null) + // throw new Exception(nameof(workItems)); + JsonElement[]? jsonElements = JsonSerializer.Deserialize(json); + if (jsonElements is null) + throw new Exception(nameof(jsonElements)); + WorkItem? workItem; + List workItems = new(); + foreach (JsonElement jsonElement in jsonElements) + { + workItem = JsonSerializer.Deserialize(jsonElement.ToString()); + if (workItem is null) + continue; + workItems.Add(workItem); + } List spaces = new(); List lines = new(); ReadOnlyCollection results; @@ -72,7 +85,7 @@ public class ProcessData : IProcessData ReadOnlyCollection records = new(keyValuePairs.Values.ToArray()); ReadOnlyCollection bugUserStoryWorkItemTypes = new(new string[] { "Bug", "User Story" }); ReadOnlyCollection bugUserStoryTaskWorkItemTypes = new(new string[] { "Bug", "User Story", "Task" }); - WriteFiles(fileRead, destinationDirectory, fileInfoCollection, records, "with-parents"); + WriteWithPartentsFile(fileRead, destinationDirectory, fileInfoCollection, records, "with-parents"); foreach (string workItemType in workItemTypes) { lines.Clear(); @@ -128,6 +141,15 @@ public class ProcessData : IProcessData WriteFiles(fileRead, destinationDirectory, fileInfoCollection, new(lines), results, "check-123067"); _Details.Add(results); } + { + lines.Clear(); + string workItemType = "Feature"; + lines.Add($"# {nameof(FeatureCheckStart122517)}"); + lines.Add(string.Empty); + results = FeatureCheckStart122517(url, lines, bugUserStoryTaskWorkItemTypes, records, workItemType); + WriteFiles(fileRead, destinationDirectory, fileInfoCollection, new(lines), results, "check-122517"); + _Details.Add(results); + } } private static void WriteFiles(IFileRead fileRead, string destinationDirectory, List fileInfoCollection, ReadOnlyCollection lines, ReadOnlyCollection workItems, string fileName) @@ -155,7 +177,7 @@ public class ProcessData : IProcessData fileInfoCollection.Add(new(jsonFile)); } - private static ReadOnlyDictionary GetWorkItems(WorkItem[] workItems) + private static ReadOnlyDictionary GetWorkItems(IEnumerable workItems) { ReadOnlyDictionary results; Dictionary keyValuePairs = new(); @@ -165,9 +187,10 @@ public class ProcessData : IProcessData return results; } - private static void WriteFiles(IFileRead fileRead, string destinationDirectory, List fileInfoCollection, ReadOnlyCollection records, string fileName) + private static void WriteWithPartentsFile(IFileRead fileRead, string destinationDirectory, List fileInfoCollection, ReadOnlyCollection records, string fileName) { - string json = JsonSerializer.Serialize(records, new JsonSerializerOptions() { WriteIndented = true }); + Record[] features = (from l in records where l.WorkItem.WorkItemType == "Feature" select l).ToArray(); + string json = JsonSerializer.Serialize(features, new JsonSerializerOptions() { WriteIndented = true }); string jsonFile = Path.Combine(destinationDirectory, $"{fileName}.json"); string jsonOld = !File.Exists(jsonFile) ? string.Empty : File.ReadAllText(jsonFile); if (json != jsonOld) @@ -612,6 +635,28 @@ public class ProcessData : IProcessData return new(results); } + private static ReadOnlyCollection GetWorkItemsNotMatching122517(Record record, ReadOnlyCollection workItems) + { + List results = new(); + if (record.WorkItem.StartDate is null) + throw new Exception(); + DateTime dateTime = record.WorkItem.StartDate.Value; + List> collection = new(); + foreach (WorkItem workItem in workItems) + { + if (workItem.State is "Removed") + continue; + if (workItem.ActivatedDate is null) + continue; + if (dateTime >= workItem.ActivatedDate.Value) + continue; + collection.Add(new(workItem.ActivatedDate.Value.Ticks, workItem)); + } + foreach (KeyValuePair keyValuePair in collection.OrderByDescending(l => l.Key)) + results.Add(keyValuePair.Value); + return new(results); + } + private static ReadOnlyCollection FeatureCheckState123066(string url, List lines, ReadOnlyCollection workItemTypes, ReadOnlyCollection records, string workItemType) { List results = new(); @@ -684,4 +729,42 @@ public class ProcessData : IProcessData return new(results); } + private static ReadOnlyCollection FeatureCheckStart122517(string url, List lines, ReadOnlyCollection workItemTypes, ReadOnlyCollection records, string workItemType) + { + List results = new(); + List collection = new(); + List violations = new(); + ReadOnlyCollection childrenWorkItems; + ReadOnlyCollection workItemsNotMatching; + foreach (Record record in records) + { + if (record.WorkItem.State is "Removed") + continue; + if (record.WorkItem.WorkItemType != workItemType) + continue; + collection.Clear(); + violations.Clear(); + if (record.Children.Count == 0) + continue; + if (record.WorkItem.StartDate is null) + continue; + childrenWorkItems = FilterChildren(workItemTypes, record); + workItemsNotMatching = GetWorkItemsNotMatching122517(record, childrenWorkItems); + if (workItemsNotMatching.Count == 0) + continue; + collection.Add($"## {record.WorkItem.AssignedTo} - {record.WorkItem.Id} - {record.WorkItem.Title}"); + collection.Add(string.Empty); + collection.Add($"- [{record.WorkItem.Id}]({url}{record.WorkItem.Id})"); + foreach (WorkItem workItem in workItemsNotMatching) + collection.Add($"- [ ] [{workItem.Id}]({url}{workItem.Id}) {nameof(record.WorkItem.ActivatedDate)} != {record.WorkItem.ActivatedDate}"); + collection.Add(string.Empty); + lines.AddRange(collection); + violations.Add($"StartDate:{record.WorkItem.StartDate};"); + foreach (WorkItem workItem in workItemsNotMatching) + violations.Add($"{workItem.Id}:{workItem.ActivatedDate};"); + results.Add(WorkItem.Get(record.WorkItem, string.Join(" ", violations))); + } + return new(results); + } + } \ No newline at end of file diff --git a/Adaptation/FileHandlers/json/FileRead.cs b/Adaptation/FileHandlers/json/FileRead.cs index 6621a0e..565c1ca 100644 --- a/Adaptation/FileHandlers/json/FileRead.cs +++ b/Adaptation/FileHandlers/json/FileRead.cs @@ -119,15 +119,16 @@ public class FileRead : Shared.FileRead, IFileRead foreach (Value value in valueWithReqCollection) { fields = value.Fields; - workItem = new(fields.SystemAreaPath, + workItem = new(fields.MicrosoftVSTSCommonActivatedDate == DateTime.MinValue ? null : fields.MicrosoftVSTSCommonActivatedDate, + fields.SystemAreaPath, fields.SystemAssignedTo?.DisplayName, - fields.MicrosoftVSTSCommonBusinessValue == 0 ? null : fields.MicrosoftVSTSCommonBusinessValue, + fields.MicrosoftVSTSCommonBusinessValue is null or 0 ? null : (long)fields.MicrosoftVSTSCommonBusinessValue, fields.SystemChangedDate, fields.MicrosoftVSTSCommonClosedDate == DateTime.MinValue ? null : fields.MicrosoftVSTSCommonClosedDate, fields.SystemCommentCount, fields.SystemCreatedDate, fields.SystemDescription, - fields.MicrosoftVSTSSchedulingEffort == 0 ? null : fields.MicrosoftVSTSSchedulingEffort, + fields.MicrosoftVSTSSchedulingEffort is null or 0 ? null : (long)fields.MicrosoftVSTSSchedulingEffort, value.Id, fields.SystemIterationPath, fields.SystemParent == 0 ? null : fields.SystemParent, @@ -136,15 +137,15 @@ public class FileRead : Shared.FileRead, IFileRead fields.CustomRequester?.DisplayName, fields.MicrosoftVSTSCommonResolvedDate == DateTime.MinValue ? null : fields.MicrosoftVSTSCommonResolvedDate, value.Rev, - fields.CustomRRminusOE == 0 ? null : fields.CustomRRminusOE, + fields.CustomRRminusOE is null or 0 ? null : (long)fields.CustomRRminusOE, fields.MicrosoftVSTSSchedulingStartDate == DateTime.MinValue ? null : fields.MicrosoftVSTSSchedulingStartDate, fields.SystemState, fields.SystemTags, fields.MicrosoftVSTSSchedulingTargetDate == DateTime.MinValue ? null : fields.MicrosoftVSTSSchedulingTargetDate, - fields.MicrosoftVSTSCommonTimeCriticality == 0 ? null : fields.MicrosoftVSTSCommonTimeCriticality, + fields.MicrosoftVSTSCommonTimeCriticality is null or 0 ? null : (long)fields.MicrosoftVSTSCommonTimeCriticality, fields.SystemTitle, null, - fields.CustomWSJF == 0 ? null : fields.CustomWSJF, + fields.CustomWSJF is null or 0 ? null : (long)fields.CustomWSJF, fields.SystemWorkItemType); results.Add(workItem); } diff --git a/Adaptation/FileHandlers/json/StaticSite/html/122517.html b/Adaptation/FileHandlers/json/StaticSite/html/122517.html new file mode 100644 index 0000000..927bb37 --- /dev/null +++ b/Adaptation/FileHandlers/json/StaticSite/html/122517.html @@ -0,0 +1,65 @@ + + + + + + + Infineon - 122517 - Children of a Feature should have the same priority + + + + + + + + + + + + + + +
+ +
+
+
+ +
  + +
+
+
+
+ + + + + \ No newline at end of file diff --git a/Adaptation/FileHandlers/json/StaticSite/js/122517.js b/Adaptation/FileHandlers/json/StaticSite/js/122517.js new file mode 100644 index 0000000..7a2cdd4 --- /dev/null +++ b/Adaptation/FileHandlers/json/StaticSite/js/122517.js @@ -0,0 +1,157 @@ +function compareFunction(a, b) { + return a.Priority[0] - b.Priority[0] || a.TimeCriticality[0] - b.TimeCriticality[0] || b.State[0] - a.State[0] || a.Id - b.Id; +} + +function showOne(rowData) { + if (rowData == null) + return; + var data = []; + data.push({ name: "Edit in ADO", value: 'Edit in ADO ' + rowData["Id"] + '' }); + for (const property in rowData) { + if (rowData[property] == null) + continue; + data.push({ name: property, value: rowData[property].toString() }); + } + $("#AllGrid").igGrid({ + autoGenerateColumns: true, + dataSource: data, + width: "100%", + showHeader: false, + }); +} + +function loadOne() { + var selectedRow = $("#HeaderGrid").data("igGridSelection").selectedRow(); + if (selectedRow == null) + return; + var rowData = $("#HeaderGrid").data("igGrid").dataSource.dataView()[selectedRow.index]; + showOne(rowData); +} + +function detailSelectionChangedRunInfo(evt, ui) { + if (ui.row.index === 0) + return; + var rowData = ui.owner.grid.dataSource.dataView()[ui.row.index]; + showOne(rowData); +} + +function getState(state) { + var result; + if (state == null) + result = "9-Null"; + else if (state === "New") + result = `1-${state}`; + else if (state === "Active") + result = `2-${state}`; + else if (state === "Resolved") + result = `3-${state}`; + else if (state === "Closed") + result = `4-${state}`; + else if (state === "Removed") + result = `5-${state}`; + else + result = `8-${state}`; + return result; +} + +function getPriority(workItemType, priority) { + var result; + if (workItemType === "Bug") + result = "0-Bug"; + else if (priority == null || priority === 0) + result = "9-Null"; + else if (priority === 1) + result = `${priority}-High`; + else if (priority === 2) + result = `${priority}-Med`; + else if (priority === 3) + result = `${priority}-Low`; + else if (priority === 4) + result = `${priority}-TBD`; + else + result = "8-Not"; + return result; +} + +function getWorkItems(data) { + var workItem; + var workItems = []; + for (var i = data.length - 1; i > -1; i--) { + workItem = data[i]; + if (workItem.Tags != null && workItem.Tags.includes("Ignore")) + continue; + if ((window.location.href.indexOf('=LEO') > -1 && workItem.AreaPath !== 'ART SPS\\LEO') || (window.location.href.indexOf('=MES') > -1 && workItem.AreaPath !== 'ART SPS\\MES')) + continue; + workItem["State"] = getState(workItem["State"]) + workItem["Priority"] = getPriority(workItem["WorkItemType"], workItem["Priority"]) + workItems.push(workItem); + } + workItems.sort(compareFunction); + return workItems; +} + +function updateSite() { + if (window.location.href.indexOf('=LEO') > -1) { + document.title = document.title.replace("Infineon", "HiRel (Leominster)"); + document.getElementById("siteHeader").innerText = "HiRel (Leominster)"; + } + else if (window.location.href.indexOf('=MES') > -1) { + document.title = document.title.replace("Infineon", "Mesa"); + document.getElementById("siteHeader").innerText = "Mesa"; + } + else { + document.title = document.title.replace("Infineon", "Infineon"); + document.getElementById("siteHeader").innerText = "Infineon"; + } +} + +function initIndex(url) { + updateSite(); + $.getJSON(url, { _: new Date().getTime() }, function (data) { + var workItems = getWorkItems(data); + console.log(data.length); + if (data.length > 0) + console.log(data[0]); + $("#HeaderGrid").igGrid({ + autoGenerateColumns: false, + dataSource: workItems, + height: "100%", + primaryKey: "Id", + width: "100%", + columns: [ + { key: "Violation", dataType: "string", hidden: true }, + { key: "Id", dataType: "number" }, + { key: "Requester", dataType: "string" }, + { headerText: "Assigned To", key: "AssignedTo", dataType: "string" }, + { key: "Title", dataType: "string", width: "20%" }, + { headerText: "System(s)", key: "Tags", dataType: "string" }, + { key: "Priority", dataType: "string" }, + { key: "State", dataType: "string" }, + { headerText: "Effort in Days", key: "Effort", dataType: "number" }, + { headerText: "UAT as of", key: "ResolvedDate", dataType: "date", format: "date" }, + { headerText: "CMP Date", key: "ClosedDate", dataType: "date", format: "date" }, + { headerText: "Target", key: "TargetDate", dataType: "date", format: "date" }, + { key: "AreaPath", dataType: "string", hidden: true }, + { key: "AssignedTo", dataType: "string", hidden: true }, + { key: "BusinessValue", dataType: "number", hidden: true }, + { key: "ChangedDate", dataType: "string", hidden: true }, + { key: "CommentCount", dataType: "number", hidden: true }, + { key: "CreatedDate", dataType: "string", hidden: true }, + { key: "Description", dataType: "string", hidden: true }, + { key: "IterationPath", dataType: "string", hidden: true }, + { key: "Revision", dataType: "number", hidden: true }, + { key: "RiskReductionMinusOpportunityEnablement", dataType: "string", hidden: true }, + { key: "StartDate", dataType: "string", hidden: true }, + { key: "WeightedShortestJobFirst", dataType: "number", hidden: true }, + { key: "WorkItemType", dataType: "string", hidden: true }, + ], + features: [ + { name: "Sorting", type: "local" }, + { name: "Filtering", type: "local" }, + { name: "Selection", mode: "row", multipleSelection: false, rowSelectionChanging: detailSelectionChangedRunInfo }, + { name: "Paging", type: "local", recordCountKey: "TotalRows", pageSize: 10, pageSizeUrlKey: "pageSize", "pageIndexUrlKey": "page", showPageSizeDropDown: true }, + ], + }); + }); + $("#HeaderGrid").on("dblclick", "tr", loadOne); +} \ No newline at end of file diff --git a/Adaptation/FileHandlers/json/StaticSite/styles/122517.css b/Adaptation/FileHandlers/json/StaticSite/styles/122517.css new file mode 100644 index 0000000..dbeaf02 --- /dev/null +++ b/Adaptation/FileHandlers/json/StaticSite/styles/122517.css @@ -0,0 +1,12 @@ +#HeaderGridDiv, +#DetailsGridDiv { + font-size: 12px; +} + +#HeaderGrid { + font-family: monospace; +} + +#AllGrid { + font-family: monospace; +} \ No newline at end of file diff --git a/Adaptation/FileHandlers/json/WorkItems/Fields.cs b/Adaptation/FileHandlers/json/WorkItems/Fields.cs index 85c13b0..9cd589b 100644 --- a/Adaptation/FileHandlers/json/WorkItems/Fields.cs +++ b/Adaptation/FileHandlers/json/WorkItems/Fields.cs @@ -9,15 +9,16 @@ public class Fields #nullable enable [JsonConstructor] - public Fields(int customRRminusOE, + public Fields(float? customRRminusOE, CustomRequester? customRequester, - float customWSJF, - int microsoftVSTSCommonBusinessValue, + float? customWSJF, + DateTime microsoftVSTSCommonActivatedDate, + float? microsoftVSTSCommonBusinessValue, DateTime microsoftVSTSCommonClosedDate, int microsoftVSTSCommonPriority, DateTime microsoftVSTSCommonResolvedDate, DateTime microsoftVSTSCommonStateChangeDate, - float microsoftVSTSCommonTimeCriticality, + float? microsoftVSTSCommonTimeCriticality, float? microsoftVSTSSchedulingEffort, DateTime microsoftVSTSSchedulingStartDate, DateTime microsoftVSTSSchedulingTargetDate, @@ -42,6 +43,7 @@ public class Fields CustomRequester = customRequester; CustomRRminusOE = customRRminusOE; CustomWSJF = customWSJF; + MicrosoftVSTSCommonActivatedDate = microsoftVSTSCommonActivatedDate; MicrosoftVSTSCommonBusinessValue = microsoftVSTSCommonBusinessValue; MicrosoftVSTSCommonClosedDate = microsoftVSTSCommonClosedDate; MicrosoftVSTSCommonPriority = microsoftVSTSCommonPriority; @@ -71,14 +73,15 @@ public class Fields } [JsonPropertyName("Custom.Requester")] public CustomRequester? CustomRequester { get; } // { init; get; } - [JsonPropertyName("Custom.RRminusOE")] public int CustomRRminusOE { get; } // { init; get; } - [JsonPropertyName("Custom.WSJF")] public float CustomWSJF { get; } // { init; get; } - [JsonPropertyName("Microsoft.VSTS.Common.BusinessValue")] public int MicrosoftVSTSCommonBusinessValue { get; } // { init; get; } + [JsonPropertyName("Custom.RRminusOE")] public float? CustomRRminusOE { get; } // { init; get; } + [JsonPropertyName("Custom.WSJF")] public float? CustomWSJF { get; } // { init; get; } + [JsonPropertyName("Microsoft.VSTS.Common.ActivatedDate")] public DateTime MicrosoftVSTSCommonActivatedDate { get; } // { init; get; } + [JsonPropertyName("Microsoft.VSTS.Common.BusinessValue")] public float? MicrosoftVSTSCommonBusinessValue { get; } // { init; get; } [JsonPropertyName("Microsoft.VSTS.Common.ClosedDate")] public DateTime MicrosoftVSTSCommonClosedDate { get; } // { init; get; } [JsonPropertyName("Microsoft.VSTS.Common.Priority")] public int MicrosoftVSTSCommonPriority { get; } // { init; get; } [JsonPropertyName("Microsoft.VSTS.Common.ResolvedDate")] public DateTime MicrosoftVSTSCommonResolvedDate { get; } // { init; get; } [JsonPropertyName("Microsoft.VSTS.Common.StateChangeDate")] public DateTime MicrosoftVSTSCommonStateChangeDate { get; } // { init; get; } - [JsonPropertyName("Microsoft.VSTS.Common.TimeCriticality")] public float MicrosoftVSTSCommonTimeCriticality { get; } // { init; get; } + [JsonPropertyName("Microsoft.VSTS.Common.TimeCriticality")] public float? MicrosoftVSTSCommonTimeCriticality { get; } // { init; get; } [JsonPropertyName("Microsoft.VSTS.Scheduling.Effort")] public float? MicrosoftVSTSSchedulingEffort { get; } // { init; get; } [JsonPropertyName("Microsoft.VSTS.Scheduling.StartDate")] public DateTime MicrosoftVSTSSchedulingStartDate { get; } // { init; get; } [JsonPropertyName("Microsoft.VSTS.Scheduling.TargetDate")] public DateTime MicrosoftVSTSSchedulingTargetDate { get; } // { init; get; } diff --git a/Adaptation/FileHandlers/json/WorkItems/WorkItem.cs b/Adaptation/FileHandlers/json/WorkItems/WorkItem.cs index 32486e9..7700374 100644 --- a/Adaptation/FileHandlers/json/WorkItems/WorkItem.cs +++ b/Adaptation/FileHandlers/json/WorkItems/WorkItem.cs @@ -9,15 +9,16 @@ public class WorkItem #nullable enable [JsonConstructor] - public WorkItem(string areaPath, + public WorkItem(DateTime? activatedDate, + string areaPath, string? assignedTo, - int? businessValue, + long? businessValue, DateTime changedDate, DateTime? closedDate, int commentCount, DateTime createdDate, string description, - float? effort, + long? effort, int id, string iterationPath, int? parent, @@ -26,17 +27,18 @@ public class WorkItem string? requester, DateTime? resolvedDate, int revision, - int? riskReductionMinusOpportunityEnablement, + long? riskReductionMinusOpportunityEnablement, DateTime? startDate, string state, string tags, DateTime? targetDate, - float? timeCriticality, + long? timeCriticality, string title, string? violation, - float? weightedShortestJobFirst, + long? weightedShortestJobFirst, string workItemType) { + ActivatedDate = activatedDate; AreaPath = areaPath; AssignedTo = assignedTo; BusinessValue = businessValue; @@ -70,7 +72,8 @@ public class WorkItem public static WorkItem Get(WorkItem workItem, string? violation) { - WorkItem result = new(workItem.AreaPath, + WorkItem result = new(workItem.ActivatedDate, + workItem.AreaPath, workItem.AssignedTo, workItem.BusinessValue, workItem.ChangedDate, @@ -100,15 +103,16 @@ public class WorkItem return result; } + public DateTime? ActivatedDate { get; set; } public string AreaPath { get; set; } public string? AssignedTo { get; set; } - public int? BusinessValue { get; set; } + public long? BusinessValue { get; set; } public DateTime ChangedDate { get; set; } public DateTime? ClosedDate { get; set; } public int CommentCount { get; set; } public DateTime CreatedDate { get; set; } public string Description { get; set; } - public float? Effort { get; set; } + public long? Effort { get; set; } public int Id { get; set; } public string IterationPath { get; set; } public int? Parent { get; set; } @@ -117,15 +121,15 @@ public class WorkItem public string? Requester { get; set; } public DateTime? ResolvedDate { get; set; } public int Revision { get; set; } - public int? RiskReductionMinusOpportunityEnablement { get; set; } + public long? RiskReductionMinusOpportunityEnablement { get; set; } public DateTime? StartDate { get; set; } public string State { get; set; } public string Tags { get; set; } public DateTime? TargetDate { get; set; } - public float? TimeCriticality { get; set; } + public long? TimeCriticality { get; set; } public string Title { get; set; } public string? Violation { get; set; } public string WorkItemType { get; set; } - public float? WeightedShortestJobFirst { get; set; } + public long? WeightedShortestJobFirst { get; set; } } \ No newline at end of file diff --git a/Adaptation/_Tests/Extract/Production/v2.57.0/MESAFIBACKLOG.cs b/Adaptation/_Tests/Extract/Production/v2.57.0/MESAFIBACKLOG.cs index b006bdd..1d5b94e 100644 --- a/Adaptation/_Tests/Extract/Production/v2.57.0/MESAFIBACKLOG.cs +++ b/Adaptation/_Tests/Extract/Production/v2.57.0/MESAFIBACKLOG.cs @@ -124,6 +124,14 @@ public class MESAFIBACKLOG // Assert.IsTrue(workItems.Count == 5); } + private static void Verify122517(FileInfo fileInfo) + { + ReadOnlyCollection workItems = GetWorkItems(fileInfo); + Assert.IsNotNull(workItems); + // Assert.IsTrue(workItems.Count == 14); + // Assert.IsTrue(workItems.Count == 14); + } + #if DEBUG [Ignore] #endif @@ -147,11 +155,13 @@ public class MESAFIBACKLOG Assert.IsTrue(keyValuePairs.ContainsKey("check-126169.json")); Assert.IsTrue(keyValuePairs.ContainsKey("check-123066.json")); Assert.IsTrue(keyValuePairs.ContainsKey("check-123067.json")); + Assert.IsTrue(keyValuePairs.ContainsKey("check-122517.json")); Verify122508(keyValuePairs["check-122508.json"]); Verify122514(keyValuePairs["check-122514.json"]); Verify126169(keyValuePairs["check-126169.json"]); Verify123066(keyValuePairs["check-123066.json"]); Verify123067(keyValuePairs["check-123067.json"]); + Verify122517(keyValuePairs["check-122517.json"]); NonThrowTryCatch(); }