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> CompareEnvironments(int id) { var folder = await _foldersProvider.GetActiveFolder(); if (User.Identity.IsAuthenticated) { var user = await _usersProvider.GetUser(User.GetUserId()); folder = user.SelectedFolder; } var runs = await _runsProvider.GetTestsForComparison(id, folder); var testInfo = await _runsProvider.GetAllTestsInfo(); var model = new List <ViewTest>(); foreach (var item in runs) { var info = testInfo.FirstOrDefault(p => p.TestName == item?.Name + ".py"); if (info == null) { continue; } var newTest = new ViewTest(item) { SuitName = info.SuiteName, Author = info.AuthorLogin }; model.Add(newTest); } return(View(model)); }
public List <ViewTest> GetAllTests() { SqlConnection connection = new SqlConnection(connectionString); string query = "SELECT * FROM ViewTests ORDER BY TestName ASC"; SqlCommand command = new SqlCommand(query, connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(); List <ViewTest> tests = new List <ViewTest>(); if (reader.HasRows) { while (reader.Read()) { ViewTest test = new ViewTest(); test.TestName = reader["TestName"].ToString(); test.TestFee = Convert.ToDecimal(reader["TestFee"].ToString()); test.TestTypeName = reader["TestTypeName"].ToString(); tests.Add(test); } reader.Close(); } connection.Close(); return(tests); }
public ViewTestButtonViewModel(ViewTest model) { // Setup initial conditions. this.model = model; Click = new DelegateCommand<Button>(button => OnClick()); ParametersViewModel = new ViewTestParametersViewModel(model); // Wire up events. modelObserver = new PropertyObserver<ViewTest>(model) .RegisterHandler(m => m.ExecuteCount, m => OnPropertyChanged<T>(o => o.ExecuteCount)); }
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)); }
public async Task Create(ViewTest vm) { foreach (Question question in vm.Questions) { await _repoQ.CreateQuestion(question); } var current = new Test(); var result = vm.DiffUpdateProperties(current); await _repo.CreateTest(result); await _repo.SaveChangesAsync(); }
public void TestInitialize() { TestHarnessModel.ResetSingleton(); var testHarness = TestHarnessModel.Instance; testHarness.Modules.RemoveAll(); classModel = new ViewTestClass(typeof(SampleViewTestClass1), "File.xap"); moduleModel = new ViewTestClassesAssemblyModule(new ModuleSetting(GetType().Assembly.FullName, "File.xap")); moduleModel.Classes.Add(classModel); testHarness.Modules.Add(moduleModel); classModel.IsCurrent = true; testModel = classModel.ViewTests[0]; }
public ViewTestParametersViewModel(ViewTest model) { // Setup initial conditions. if (model == null) throw new ArgumentNullException("model"); EnumDropDowns = new ObservableCollection<ComboBoxViewModel>(); // Populate with enum combo-boxes. var enumParams = from p in model.Parameters.Items where p.Type.IsEnum || p.Type.IsA(typeof(bool)) select p; foreach (var parameter in enumParams) { EnumDropDowns.Add(CreateComboBox(parameter)); } }
public async Task <IActionResult> Edit(string id, ViewTest vm) { var test = _repo.GetTest(id); if (test == null) { var error = new { StatusText = "There is no item with this id" }; return(BadRequest(error)); } var result = vm.DiffUpdateProperties(test); _repo.UpdateTest(result); await _repo.SaveChangesAsync(); return(Ok()); }
public IEnumerable <ViewTest> GetAll() { var result = from t in context.Tests join e in context.Exams on t.ExamId equals e.Id join s in context.SemesterExams on t.SemasterExamId equals s.ID // where t.Status != 0 select new { t.Id, t.TestName, t.CreateBy, t.PassScore, e.NameExam, s.SemesterName, t.Status }; List <ViewTest> list = new List <ViewTest>(); foreach (var item in result) { ViewTest viewTest = new ViewTest(); viewTest.Id = item.Id; viewTest.TestName = item.TestName; viewTest.CreateBy = item.CreateBy; viewTest.PassScore = item.PassScore; viewTest.NameExam = item.NameExam; viewTest.SemesterName = item.SemesterName; viewTest.Status = item.Status; list.Add(viewTest); } return(list); //var ques = context.Database.SqlQuery<ViewTest> // ("select t.Id,t.TestName,t.CreateBy,PassScore, e.NameExam,s.SemesterName,t.Status from Tests t join Exams e on t.ExamId = e.Id join SemesterExam s on t.SemasterExamId = s.ID").ToList(); //return ques.ToList(); }
// GET public async Task <IActionResult> Index(int id, string suit, int filterOption, string query, string userFilter, int page = 1) { var filter = (TestExplorerFilter)filterOption; if (string.IsNullOrEmpty(suit)) { suit = "ALL"; } var run = await _runsProvider.GetRun(id); var testsInfo = await _runsProvider.GetAllTestsInfo(); var testInfos = testsInfo as TestInfo[] ?? testsInfo.ToArray(); var testInfoTests = testInfos.Select(p => p.TestName).ToList(); testsInfo = testInfos.ToList(); var model = new TestsExplorerViewModel { Environment = run.Environment, ReportTime = run.ReportTime, RunId = run.Id }; foreach (var test in run.Tests) { var testSuite = testsInfo.FirstOrDefault(p => p.TestName == test.Name + ".py"); if (testSuite == null) { continue; } { var exists = model.TestSets.FirstOrDefault(p => p.Name == testSuite.SuiteName); if (exists != null) { //add new tests to existing suite var newTest = new ViewTest(test, testInfos); exists.Tests.Add(newTest); } else { var newTestSuite = new TestSet { Name = testSuite.SuiteName, Id = testSuite.Id }; var newTest = new ViewTest(test, testInfos); newTestSuite.Tests.Add(newTest); model.TestSets.Add(newTestSuite); } } } foreach (var testSet in model.TestSets) { testSet.FailedTests = testSet.Tests.Count(p => p.Failed); } //display all tests var allTestSet = new TestSet { Name = "ALL", FailedTests = run.Tests.Count(p => p.Steps.ToList().Exists(z => !z.IsPassed)), Id = -1, }; allTestSet.Tests = new List <ViewTest>(); run.Tests.ToList().ForEach(p => allTestSet.Tests.Add(new ViewTest(p, testInfos) )); model.TestSets.Add(allTestSet); var notAssignedTests = run.Tests.Where(p => !testInfoTests.Contains(p.Name + ".py")).ToList(); //Display not assigned var notAssignedTestSet = new TestSet { Name = "NOT ASSIGNED", FailedTests = 0, Id = 0, Tests = new List <ViewTest>() }; notAssignedTests.ToList().ForEach(p => allTestSet.Tests.Add(new ViewTest(p, testInfos) )); model.TestSets.Add(notAssignedTestSet); model.FilteredTestSets = model.TestSets.Clone(); if (!string.IsNullOrEmpty(suit)) { model.SelectedSuite = suit; model.FilteredTestSets = model.FilteredTestSets.Where(p => p.Name == suit).ToList(); } switch (filter) { case TestExplorerFilter.Total: break; case TestExplorerFilter.Passed: foreach (var testSets in model.FilteredTestSets) { testSets.Tests = testSets.Tests.Where(p => p.Status == TestStatus.Passed).ToList(); } break; case TestExplorerFilter.Failed: foreach (var testSets in model.FilteredTestSets) { testSets.Tests = testSets.Tests.Where(p => p.Status == TestStatus.Failed).ToList(); } break; case TestExplorerFilter.Errors: foreach (var testSets in model.FilteredTestSets) { testSets.Tests = testSets.Tests.Where(p => p.Status == TestStatus.Error).ToList(); } break; default: throw new ArgumentOutOfRangeException(); } model.TestExplorerFilter = filter; model.Query = query; if (!string.IsNullOrEmpty(query)) { foreach (var testSet in model.FilteredTestSets) { if (query.Contains("!")) { testSet.Tests = testSet.Tests.Where(p => p.Name.Equals(query.Replace("!", ""))).ToList(); } else { testSet.Tests = testSet.Tests.Where(p => p.Name.Contains(query)).ToList(); } } } model.Users = testInfos.Select(p => p.AuthorLogin).Distinct(); if (userFilter != null) { model.UserFilter = userFilter; foreach (var testSet in model.FilteredTestSets) { testSet.Tests = testSet.Tests.Where(p => p.Author == userFilter).ToList(); } } model.Pager = new Pager(model.FilteredTestSets.SelectMany(p => p.Tests).Count(), page); return(View(model)); }
public async Task <IActionResult> TestsExplorer(int id, string suit, bool failedOnly) { var run = await _runsProvider.GetRun(id); var testsInfo = await _runsProvider.GetAllTestsInfo(); testsInfo = testsInfo.ToList(); var model = new TestsExplorerViewModel { Environment = run.Environment, ReportTime = run.ReportTime, RunId = run.Id }; foreach (var test in run.Tests) { var testSuite = testsInfo.FirstOrDefault(p => p.TestName == test.Name + ".py"); if (testSuite == null) { continue; } { var exists = model.TestSets.FirstOrDefault(p => p.Name == testSuite.SuiteName); if (exists != null) { //add new tests to existing suite var newTest = new ViewTest { Name = test.Name, Description = test.Description, Author = testSuite.AuthorLogin, Failed = test.Steps.Count(p => !p.IsPassed) != 0 }; foreach (var testStep in test.Steps) { newTest.Steps.Add(new ViewStep { DateTime = testStep.Issued, Message = testStep.Message, StackTrace = testStep.Stacktrace, IsPassed = testStep.IsPassed }); } exists.Tests.Add(newTest); } else { var newTestSuite = new TestSet { Name = testSuite.SuiteName, Id = testSuite.Id }; var newTest = new ViewTest { Name = test.Name, Description = test.Description, Author = testSuite.AuthorLogin, Failed = test.Steps.Count(p => !p.IsPassed) != 0 }; foreach (var testStep in test.Steps) { newTest.Steps.Add(new ViewStep { DateTime = testStep.Issued, Message = testStep.Message, StackTrace = testStep.Stacktrace, IsPassed = testStep.IsPassed }); } newTestSuite.Tests.Add(newTest); model.TestSets.Add(newTestSuite); } } } foreach (var testSet in model.TestSets) { testSet.FailedTests = testSet.Tests.Count(p => p.Failed); } //display all tests var allTestSet = new TestSet { Name = "All", FailedTests = run.Tests.Count(p => p.Steps.ToList().Exists(z => !z.IsPassed)), Id = 0 }; allTestSet.Tests = new List <ViewTest>(); run.Tests.ToList().ForEach(p => allTestSet.Tests.Add(new ViewTest { Name = p.Name, Description = p.Description, Failed = p.Steps.ToList().Exists(z => !z.IsPassed), Steps = p.Steps.Select(q => new ViewStep(q)).ToList(), Author = testsInfo.FirstOrDefault(z => z.TestName == (p.Name + ".py"))?.AuthorLogin })); model.TestSets.Add(allTestSet); model.FilteredTestSets = model.TestSets.Clone(); if (!string.IsNullOrEmpty(suit)) { model.SelectedSuite = suit; model.FilteredTestSets = model.FilteredTestSets.Where(p => p.Name == suit).ToList(); } if (!failedOnly) { return(View(model)); } { foreach (var testSets in model.FilteredTestSets) { testSets.Tests = testSets.Tests.Where(p => p.Failed).ToList(); } } return(View(model)); }
//IEnumerable<ViewTest> ITestRepository<Test>.Search(string searchString) //{ // throw new NotImplementedException(); //} public IEnumerable <ViewTest> Search(string searchString) { if (searchString != null && searchString != "undefined") { //var ques = context.Database.SqlQuery<ViewTest> //(" select t.Id,t.TestName,t.CreateBy,PassScore, e.NameExam,s.SemesterName,t.Status from Tests t join Exams e on t.ExamId = e.Id join SemesterExam s on t.SemasterExamId = s.ID where t.TestName like '%"+searchString+"%'").ToList(); var result = from t in context.Tests join e in context.Exams on t.ExamId equals e.Id join s in context.SemesterExams on t.SemasterExamId equals s.ID where t.TestName.Contains(searchString) select new { t.Id, t.TestName, t.CreateBy, t.PassScore, e.NameExam, s.SemesterName }; List <ViewTest> list = new List <ViewTest>(); foreach (var item in result) { ViewTest viewTest = new ViewTest(); viewTest.Id = item.Id; viewTest.TestName = item.TestName; viewTest.CreateBy = item.CreateBy; viewTest.PassScore = item.PassScore; viewTest.NameExam = item.NameExam; viewTest.SemesterName = item.SemesterName; list.Add(viewTest); } return(list); } var resultt = from t in context.Tests join e in context.Exams on t.ExamId equals e.Id join s in context.SemesterExams on t.SemasterExamId equals s.ID select new { t.Id, t.TestName, t.CreateBy, t.PassScore, e.NameExam, s.SemesterName }; List <ViewTest> listt = new List <ViewTest>(); foreach (var item in resultt) { ViewTest viewTest = new ViewTest(); viewTest.Id = item.Id; viewTest.TestName = item.TestName; viewTest.CreateBy = item.CreateBy; viewTest.PassScore = item.PassScore; viewTest.NameExam = item.NameExam; viewTest.SemesterName = item.SemesterName; listt.Add(viewTest); } return(listt); }
private void OnTestExecuteRequest(object sender, EventArgs e) { // Store property state. currentViewTest = sender as ViewTest; // Update the set of controls instances. currentControls.Populate(currentViewTest.Parameters); // Alert listeners. FireExecuteRequest(currentViewTest); OnPropertyChanged<T>(m => m.CurrentViewTest, m => m.CurrentControls); // Pass execution back to the ViewTest with the set of controls. CurrentViewTest.Execute(Instance, currentViewTest.Parameters.ToArray()); }
private void FireExecuteRequest(ViewTest test) { if (ExecuteRequest != null) ExecuteRequest(this, new TestExecuteEventArgs{ViewTest = test}); }