private async Task <TestResultsGroupData[]> GetTestResultsWithWorkItemsAsync(TestResultsDetails resultIdsToFetch)
        {
            TestResultsDetailsForGroup[] resultDetailGroupsToParse =
                resultIdsToFetch.ResultsForGroup.ToArray();

            var testResultDetailsParser = GetParser(resultIdsToFetch);

            var filteredTestResultGroups = await resultIdsToFetch
                                           .ResultsForGroup
                                           .ParallelSelectAsync(async resultsForGroup =>
            {
                var resultGroup = new TestResultsGroupData
                {
                    GroupName = testResultDetailsParser.GetGroupByValue(resultsForGroup)
                };

                var results  = await GetTestResultsWithBugRefsAsync(resultsForGroup);
                var bugsRefs = results.Select(result => result.AssociatedBugRefs).Merge();

                var workItemDictionary = await GetWorkItemsAsync(bugsRefs);

                SetAssociatedBugs(results, workItemDictionary);
                results.ForEach(resultGroup.AddTestResult);
                return(resultGroup);
            });

            return(filteredTestResultGroups);
        }
 public TestResultDetailsParserForRun(TestResultsDetails testResultDetailsForRunGroup, ILogger logger)
     : base(testResultDetailsForRunGroup, logger)
 {
     if (!string.Equals(testResultDetailsForRunGroup.GroupByField,
                        TestResultsConstants.TestRun, StringComparison.InvariantCultureIgnoreCase))
     {
         throw new EmailReportException(
                   $"Expected test result group type to be {TestResultsConstants.TestRun}. But found {testResultDetailsForRunGroup.GroupByField}");
     }
 }
        private async Task <TestSummaryGroup> GetTestSummaryByPriorityAsync()
        {
            TestResultsDetails testSummaryItemsByRuns = await _tcmApiHelper.GetTestSummaryAsync(TestResultsConstants.Priority);

            var testResultDetailsParserForPriority = new TestResultDetailsParserForPriority(testSummaryItemsByRuns, _logger);
            var testSummaryByRun = new TestSummaryGroup
            {
                GroupingType = TestResultsGroupingType.Priority,
                Runs         = testResultDetailsParserForPriority.GetSummaryItems()
            };

            return(testSummaryByRun);
        }
        private ITestResultDetailsParser GetParser(TestResultsDetails resultDetails)
        {
            var groupByField = resultDetails.GroupByField;

            if (string.Equals(groupByField, TestResultsConstants.TestRun, StringComparison.InvariantCultureIgnoreCase))
            {
                return(new TestResultDetailsParserForRun(resultDetails, _logger));
            }

            if (string.Equals(groupByField, TestResultsConstants.Priority,
                              StringComparison.InvariantCultureIgnoreCase))
            {
                return(new TestResultDetailsParserForPriority(resultDetails, _logger));
            }

            throw new EmailReportException($"TestResultsDetails by group {groupByField} not supported");
        }
Exemplo n.º 5
0
        public static bool HasFilteredTestResults(this TestResultsDetails resultIdsToFetch, int maxItems)
        {
            var hasFiltered    = false;
            var remainingItems = maxItems;

            foreach (TestResultsDetailsForGroup group in resultIdsToFetch.ResultsForGroup)
            {
                var currentItemsSize = group.Results.Count;
                if (currentItemsSize > remainingItems)
                {
                    hasFiltered = true;
                    List <TestCaseResult> results = group.Results.ToList();
                    var itemCountToRemove         = currentItemsSize - remainingItems;
                    results.RemoveLastNItems(itemCountToRemove);
                    group.Results = results;
                }
                remainingItems -= group.Results.Count;
            }

            resultIdsToFetch.ResultsForGroup =
                resultIdsToFetch.ResultsForGroup.Where(group => group.Results.Any()).ToList();
            return(hasFiltered);
        }
 protected AbstractTestResultDetailsParser(TestResultsDetails testResultDetails, ILogger logger)
 {
     TestResultDetails = testResultDetails;
     _logger           = logger;
 }