public async Task <IActionResult> AnalyzeTest(AnalyzeTestViewModel model) { if (!ModelState.IsValid) { return(View(model)); } try { var testInfos = await _runsProvider.GetAllTestsInfo(); var test = await _runsProvider.GetTest(model.TestId); var viewTest = new ViewTest(test, testInfos); model.Test = viewTest; model.Run = test.Run; var user = await _usersProvider.GetUser(User.GetUserId()); var analyzeResolution = (AnalysisResolution)model.SelectedResolutionId; if (!model.SelectedStepId.HasValue) { throw new Exception("Step was not specified"); } await _runsProvider.SetAnalysisState(model.SelectedStepId.Value, analyzeResolution, model.IsExistingIssue, model.ExistingIssueId, model.Title, model.Message, model.SelectedSuiteId, user); return(RedirectToAction("AnalyzeTest", "ResultsExplorer", new { @id = model.TestId })); } catch (Exception e) { ModelState.AddModelError(string.Empty, e.Message); return(View(model)); } }
public async Task <IActionResult> AnalyzeTest(long id) { var user = await _usersProvider.GetUser(User.GetUserId()); var testInfos = await _runsProvider.GetAllTestsInfo(); var model = new AnalyzeTestViewModel(); var test = await _runsProvider.GetTest(id); var viewTest = new ViewTest(test, testInfos); model.TestId = id; model.CurrentUser = user; model.Test = viewTest; model.Run = test.Run; var failedStep = test.Steps.FirstOrDefault(p => !p.IsPassed); model.SelectedStepId = failedStep?.Id; model.Title = $@"Fix {viewTest.Name} test"; model.Message = $@"Can not reproduce failure described at step: ""{failedStep?.Message.Trim()}"" for {test.Run.Environment.ConvertEnvironment()}"; if (failedStep?.Stacktrace != null) { model.Message += $@" with the following stacktrace:{Environment.NewLine + failedStep?.Stacktrace.Replace("<<", "")}"; } model.NewIssueMessage = $@"The test fails at step: ""{failedStep?.Message.Trim()}"" for {test.Run.Environment.ConvertEnvironment()}"; if (failedStep?.Stacktrace != null) { model.NewIssueMessage += $@" with the following stacktrace:{Environment.NewLine + failedStep?.Stacktrace.Replace("<<", "")}"; } model.KnownIssueMessage = $@"The failure is still reproducible for {test.Run.Environment.ConvertEnvironment()}"; var testSuits = await _testLabProvider.GetAllTestSuits(); model.TestSuitsModel = testSuits.OrderByDescending(p => p.Id).Select(p => new SelectListItem { Text = p.Name, Value = p.Id.ToString() }); model.Resolutions = ((AnalysisResolution[])Enum.GetValues(typeof(AnalysisResolution))).Select(p => new SelectListItem { Text = p.GetDescription(), Value = ((int)p).ToString() }); model.TestSuitsModel = model.TestSuitsModel.OrderByDescending(p => int.Parse(p.Value)); return(View(model)); }