Example #1
0
        private TestResultViewModel CreateTestResultViewModel(int id, int resultId, TestViewModel viewModel, bool isTimeOut = false)
        {
            DateTime finished     = DateTime.UtcNow;
            var      usersAnswers = viewModel?.UsersAnswers;
            var      test         = _TestService.GetTest(id);
            // check answers
            int rightAnswers = ValidateTestsResults.Check(usersAnswers, test);
            // get user
            var user = _userManager.GetUserAsync(HttpContext.User).Result;
            // create testResult in database
            var testResult = _TestResultService.GetTestResult(resultId);

            if (testResult != null)
            {
                if (testResult.Finished == DateTime.Parse("05/15/2001") && testResult.Finished - testResult.Started <= TimeSpan.FromMinutes(test.Time))
                {
                    testResult.Finished     = finished;
                    testResult.RightAnswers = rightAnswers;
                    _TestResultService.Update(testResult);
                }
                // create viewModel
                var resultViewModel = new TestResultViewModel()
                {
                    RightAnswers = testResult.RightAnswers,
                    Finished     = testResult.Finished,
                    Test         = test,
                    User         = user,
                    Answers      = test.Questions.Count(),
                    IsTimeout    = isTimeOut,
                    Started      = testResult.Started
                };
                return(resultViewModel);
            }
            return(null);
        }
        private void TestResultView_DataContextChanged(FrameworkElement sender, DataContextChangedEventArgs args)
        {
            TestResultViewModel model = DataContext as TestResultViewModel;

            if (model != null)
            {
                _currModel = model;

                if (model.Status == TestStatus.Passed)
                {
                    ButtonSaveAsExpected.Visibility = Visibility.Collapsed;
                }
                else
                {
                    ButtonSaveAsExpected.Visibility = Visibility.Visible;

                    switch (model.Status)
                    {
                    case TestStatus.Failed:
                    case TestStatus.FailedButSourceWasChanged:
                        ButtonSaveAsExpected.Content = "Accept new version";
                        break;

                    case TestStatus.Passed:
                        ButtonSaveAsExpected.Content = "Set as expected";
                        break;
                    }
                }

                ButtonCompareCard.Visibility       = model.DidCardPayloadChange ? Visibility.Visible : Visibility.Collapsed;
                ButtonCompareHostConfig.Visibility = model.DidHostConfigChange ? Visibility.Visible : Visibility.Collapsed;
            }
        }
        public async Task <IActionResult> AddTestResult([FromBody] TestResultViewModel formdata)
        {
            try
            {
                if (formdata == null)
                {
                    return(BadRequest(new JsonResult(new { message = "object sent from client is null." })));
                }
                else if (!ModelState.IsValid)
                {
                    return(BadRequest("Invalid model object sent from client."));
                }
                var testResult     = _mapper.Map <TestResultDto>(formdata);
                var testResultData = await _testResultService.AddTestResult(testResult);

                if (testResultData == -1)
                {
                    return(NotFound());
                }
                testResult.Id = testResultData;
                var addedTestresult = _mapper.Map <TestResultViewModel>(testResult);
                return(CreatedAtAction(nameof(GetTestResult), new { id = testResultData }, addedTestresult));
            }
            catch (Exception e)
            {
                return(StatusCode(500, $"Something went wrong inside add testresult action: {e.Message}"));
            }
        }
Example #4
0
        public async Task <IActionResult> TestResult(int buildId, int testResultId)
        {
            if (!Project.ExplicitSubmissionRequired)
            {
                return(NotFound());
            }

            var testResult = await BuildService.GetTestResultAsync
                             (
                ClassroomName,
                ProjectName,
                testResultId
                             );

            if (testResult == null || testResult.BuildId != buildId)
            {
                return(NotFound());
            }

            if (testResult.Build.Commit.UserId != User.Id && ClassroomRole < ClassroomRole.Admin)
            {
                return(Forbid());
            }

            var viewModel = new TestResultViewModel(testResult);

            return(View(viewModel));
        }
Example #5
0
        async public Task TestCard(FileViewModel hostConfigFile, FileViewModel cardFile)
        {
            var renderResult = await UWPTestLibrary.RenderTestHelpers.RenderCard(cardFile, hostConfigFile);

            if (renderResult.Tree != null)
            {
                UWPTestLibrary.ImageWaiter imageWaiter = new ImageWaiter(renderResult.Tree);

                StackPanel stackPanel = new StackPanel();
                stackPanel.Children.Add(renderResult.Tree);

                Border border = new Border();
                border.Width = renderResult.CardWidth;
                border.Child = stackPanel;

                ScrollViewer scrollViewer = new ScrollViewer();
                scrollViewer.Content = border;

                (Window.Current.Content as Frame).Content = scrollViewer;

                await imageWaiter.WaitOnAllImagesAsync();
            }

            StorageFile imageResultFile = null;
            StorageFile jsonResultFile  = null;

            if (renderResult.Error == null)
            {
                imageResultFile = await _tempResultsFolder.CreateFileAsync("Result.png", CreationCollisionOption.GenerateUniqueName);

                jsonResultFile = await _tempResultsFolder.CreateFileAsync("Result.json", CreationCollisionOption.GenerateUniqueName);

                await UWPTestLibrary.RenderTestHelpers.ResultsToFile(imageResultFile, jsonResultFile, renderResult.RoundTrippedJSON, renderResult.Tree);
            }

            await Task.Delay(10);

            TestResultViewModel result = await TestResultViewModel.CreateAsync(
                cardFile : cardFile,
                hostConfigFile : hostConfigFile,
                renderedTestResult : renderResult,
                actualImageFile : imageResultFile,
                actualJsonFile : jsonResultFile,
                expectedFolder : _expectedFolder,
                sourceHostConfigsFolder : _sourceHostConfigsFolder,
                sourceCardsFolder : _sourceCardsFolder);

            // For the unit test, only check that the renderer succeeded (or not) as expected, and that the round tripped json is unchanged.
            // Image comparison for the time being is not quite stable enough to run as a unit test.
            // Allow new cards to pass as long as they don't have an error
            bool testPass =
                result.Status.MatchedViaError ||
                result.Status.JsonRoundTripMatched ||
                (result.Status.NewCard && (result.Status.Error == null));

            if (!testPass)
            {
                throw new Exception(result.Status.ToString() + ": " + result.HostConfigName + "\\" + result.CardName);
            }
        }
        public async Task <IActionResult> UpdateTestResult(int id, [FromBody] TestResultViewModel formdata)
        {
            try
            {
                if (formdata == null)
                {
                    return(BadRequest(new JsonResult(new { message = "object sent from client is null." })));
                }
                if (id <= 0)
                {
                    return(BadRequest(new JsonResult(new { message = "object sent from client is null." })));
                }
                if (id != formdata.Id)
                {
                    return(BadRequest(new JsonResult(new { message = "please ensure you are updating right object" })));
                }
                if (!ModelState.IsValid)
                {
                    return(BadRequest("Invalid model object sent from client."));
                }
                var testResult   = _mapper.Map <TestResultDto>(formdata);
                var testResultId = await _testResultService.UpdateTestResult(testResult);

                if (testResultId == -1)
                {
                    return(NotFound());
                }
                testResult.Id = testResultId;
                return(CreatedAtAction(nameof(GetTestResult), new { id = testResultId }, _mapper.Map <TestResultViewModel>(testResult)));
            }
            catch (Exception e)
            {
                return(StatusCode(500, new JsonResult(new { message = $"Something went wrong inside update TestResult action: {e.Message}" })));
            }
        }
Example #7
0
        public LastXBuildsStat GetLastXBuildDataByTestResult(TestResultViewModel sr, bool forModal)
        {
            if (forModal)
            {
                string id = $"{sr.TestResult.TestRunMetaData.FlytApplicationType}-{sr.TestResult.TestRunMetaData.BuildNumber}";
                if (existingModals.Contains(id))
                {
                    return(null);
                }

                existingModals.Add(id);
            }

            switch (sr.TestResult.TestRunMetaData.FlytApplicationType)
            {
            case FlytApplication.BV: return(GetLastXBuildStat(TestStats.BVLastXBuildsDict, sr.TestResult.TestRunMetaData.BuildNumber));

            case FlytApplication.BVV: return(GetLastXBuildStat(TestStats.BVVLastXBuildsDict, sr.TestResult.TestRunMetaData.BuildNumber));

            case FlytApplication.CAR: return(GetLastXBuildStat(TestStats.CARLastXBuildsDict, sr.TestResult.TestRunMetaData.BuildNumber));

            case FlytApplication.PPT: return(GetLastXBuildStat(TestStats.PPTLastXBuildsDict, sr.TestResult.TestRunMetaData.BuildNumber));

            case FlytApplication.SCC: return(GetLastXBuildStat(TestStats.SCCLastXBuildsDict, sr.TestResult.TestRunMetaData.BuildNumber));

            default: throw new Exception($"unknown application type: {sr.TestResult.TestRunMetaData.FlytApplicationType}");
            }
        }
Example #8
0
 public ViewResult TestResult()
 {
     Database.SetInitializer(new DropCreateDatabaseIfModelChanges <EFTestDbContext>());
     ViewBag.Error = "";
     if (Request["answer" + 1] != null)
     {
         int CurTest    = 0;
         int i          = 2;
         var result     = Request["answer" + 1];
         int LastLength = 0;
         int NewLength  = 0;
         do
         {
             LastLength = result.Length;
             if (i == 2)
             {
                 result += ",";
             }
             result   += Request.Unvalidated["answer" + (i)];
             NewLength = result.Length;
             if (NewLength > LastLength)
             {
                 result += ",";
             }
             i++;
         }while (NewLength > LastLength);
         result = result.Remove(result.Length - 1, 1);
         string[] answer         = result.Split(',');
         int      NumOfQuestions = answer.Length;
         i = 0;
         foreach (string a in answer)
         {
             string[] b = a.Split(':');
             if (b[1] == "yes")
             {
                 i++;
                 //SelAnswers.Add(answers.Answers.First(x => x.Id == Convert.ToInt32(b[2])));
             }
             CurTest = int.Parse(b[4]);
         }
         TestResultViewModel model  = new TestResultViewModel();
         TestPreview         MyTest = test.Tests.First(x => x.Id == CurTest);
         model.Answers       = answers.Answers;
         model.Questions     = question.Question;
         model.ResultStrings = answer;
         ViewBag.Result      = result + "NumOfQ=" + NumOfQuestions + "NumOfCorr=" + i + "TestID=" + CurTest;
         ViewBag.Questions   = NumOfQuestions;
         ViewBag.Correct     = i;
         ViewBag.TestTheme   = MyTest.Theme;
         ViewBag.TestID      = CurTest;
         return(View(model));
     }
     else
     {
         ViewBag.Error = "Error";
         return(View(new TestResultViewModel()));
     }
 }
Example #9
0
        public void IsDetailedSectionVisibile_Is_Colapsed_By_Default_Test()
        {
            TestResult result = new TestResult();

            result.Passed = true;
            TestResultViewModel viewModel = new TestResultViewModel(result);

            Confirm.Equal(Visibility.Collapsed, viewModel.IsDetailedSectionVisibile);
        }
Example #10
0
        public void ErrorVisibility_Will_Return_Visibility_Colapsed_If_Test_Passed_Test()
        {
            TestResult result = new TestResult();

            result.Passed = true;
            TestResultViewModel viewModel = new TestResultViewModel(result);

            Confirm.Equal(Visibility.Collapsed, viewModel.ErrorVisibility);
        }
        private async void ButtonCompareHostConfig_Click(object sender, RoutedEventArgs e)
        {
            TestResultViewModel model = DataContext as TestResultViewModel;

            if (model != null)
            {
                ShowComparison(await model.GetOldHostConfigContentsAsync(), model.HostConfigFile.Contents);
            }
        }
Example #12
0
        public void DurationVisibility_Will_Return_Visibility_Colapsed_If_Test_Failed_Test()
        {
            TestResult result = new TestResult();

            result.Passed = false;
            TestResultViewModel viewModel = new TestResultViewModel(result);

            Confirm.Equal(Visibility.Collapsed, viewModel.DurationVisibility);
        }
        public IActionResult Index()
        {
            TestResultViewModel result = new TestResultViewModel()
            {
                FoodParcels = this.TestResultService.GetFoodParcels()
            };

            return(View(result));
        }
        private async void ButtonRoundTrippedJson_Click(object sender, RoutedEventArgs e)
        {
            TestResultViewModel model = DataContext as TestResultViewModel;

            if (model != null)
            {
                ShowComparison(model.ExpectedRoundtrippedJsonModel.Contents, model.RoundtrippedJsonModel.Contents);
            }
        }
Example #15
0
        public void ErrorVisibility_Will_Return_Visibility_Visible_If_Test_Failed_Test()
        {
            TestResult result = new TestResult();

            result.Passed = false;
            TestResultViewModel viewModel = new TestResultViewModel(result);

            Confirm.Equal(Visibility.Visible, viewModel.ErrorVisibility);
        }
Example #16
0
        public void DurationVisibility_Will_Return_Visibility_Visible_If_Test_Passed_Test()
        {
            TestResult result = new TestResult();

            result.Passed = true;
            TestResultViewModel viewModel = new TestResultViewModel(result);

            Confirm.Equal(Visibility.Visible, viewModel.DurationVisibility);
        }
Example #17
0
        public void SectionVisibilityCommand_Will_Fire_And_Toggle_Detail_Section_To_Visible_Test()
        {
            TestResult result = new TestResult();

            result.Passed = true;
            TestResultViewModel viewModel = new TestResultViewModel(result);

            viewModel.SectionVisibilityCommand.Execute(null);
            Confirm.Equal(Visibility.Visible, viewModel.IsDetailedSectionVisibile);
        }
 public TestResultDetailsView()
 {
     InitializeComponent();
     if (!DesignerProperties.GetIsInDesignMode(this))
     {
         TestResultViewModel testResultViewModel = (App.Current as App).Container.GetService <TestResultViewModel>();
         testResultViewModel.OnLoadTestResults();
         this.DataContext = testResultViewModel;
     }
 }
        private void TestResultView_DataContextChanged(FrameworkElement sender, DataContextChangedEventArgs args)
        {
            TestResultViewModel model = DataContext as TestResultViewModel;

            if (model != null)
            {
                _currModel = model;

                ButtonUpdateImage.Visibility     = Visibility.Collapsed;
                ButtonUpdateJson.Visibility      = Visibility.Collapsed;
                ButtonUpdateOriginals.Visibility = Visibility.Collapsed;
                ButtonUpdateAll.Visibility       = Visibility.Collapsed;

                if (model.Status.NewCard)
                {
                    // For a new card, only let them update "all"
                    ButtonUpdateAll.Visibility = Visibility.Visible;
                }
                else if (model.Status.MatchedViaError)
                {
                    // If they matched via error nothing to update except possibly the original
                    ButtonUpdateOriginals.Visibility = model.Status.OriginalMatched ? Visibility.Collapsed : Visibility.Visible;
                }
                else
                {
                    // Provide the appropriate buttons to update as needed
                    uint buttonsShown = 0;
                    if (!model.Status.ImageMatched)
                    {
                        ButtonUpdateImage.Visibility = Visibility.Visible;
                        buttonsShown++;
                    }
                    if (!model.Status.JsonRoundTripMatched)
                    {
                        ButtonUpdateJson.Visibility = Visibility.Visible;
                        buttonsShown++;
                    }
                    if (!model.Status.OriginalMatched)
                    {
                        ButtonUpdateOriginals.Visibility = Visibility.Visible;
                        buttonsShown++;
                    }

                    // Only show the update all button if we have more than one thing to update
                    if (buttonsShown > 1)
                    {
                        ButtonUpdateAll.Visibility = Visibility.Visible;
                    }
                }

                ButtonCompareCard.Visibility       = model.DidCardPayloadChange ? Visibility.Visible : Visibility.Collapsed;
                ButtonCompareHostConfig.Visibility = model.DidHostConfigChange ? Visibility.Visible : Visibility.Collapsed;
                ButtonRoundTrippedJson.Visibility  = model.DidRoundtrippedJsonChange ? Visibility.Visible : Visibility.Collapsed;
            }
        }
        public ActionResult ShowResult(int resultId)
        {
            TestResultViewModel model = new TestResultViewModel
            {
                Resul = ResultService.GetResultEntityById(resultId).ToMvcResult(),
                Test  = TestService.GetTestEntity(ResultService.GetResultEntityById(resultId)
                                                  .ToMvcResult().TestId).ToMvcTest()
            };

            return(View(model));
        }
Example #21
0
        public void Create(TestResultViewModel model)
        {
            var item = new TestResult()
            {
                Result = model.Result, StudentEmail = model.StudentEmail, TaskId = model.TaskId
            };

            _DB.TestResults.Add(item);
            _DB.SaveChanges();
            model.Id = item.Id;
        }
Example #22
0
        public ActionResult TestResult(int testId)
        {
            var questions = DataAcess.TestManagment.GetQuestionList(testId);
            TestResultViewModel testResult = new TestResultViewModel
            {
                TestId         = testId,
                TestName       = DataAcess.TestManagment.GetTest(testId).TestName,
                TotalQuestions = questions.Count
            };


            foreach (var questionid in questions)
            {
                var questionResult = new QuestionResultViewModel {
                    QuestionId = questionid
                };
                var question          = DataAcess.TestManagment.GetQuestion(testId, questionid);
                int userRightAnswered = 0;
                foreach (var option in question.UserChoice)
                {
                    if (!questionResult.UserAnswer.Contains(option))
                    {
                        questionResult.UserAnswer.Add(option);
                    }

                    foreach (var answer in question.RightAnswer)
                    {
                        if (!questionResult.RightAnswer.Contains(answer))
                        {
                            questionResult.RightAnswer.Add(answer);
                        }

                        if (option.ToLower().Contains(answer.ToLower()))
                        {
                            userRightAnswered++;
                        }
                    }
                }

                if (userRightAnswered == question.RightAnswer.Count)
                {
                    testResult.UserRightAnswered++;
                }
                if (question.UserChoice.Count > 0)
                {
                    testResult.UserAnswered++;
                }
                if (DataAcess.TestManagment.GetUser(User.Identity.Name).Role.Contains(DataAcess.DomainModels.Role.Admin))
                {
                    testResult.QuestionInfo.Add(questionResult);
                }
            }
            return(View(testResult));
        }
        internal static OperationDetails CalculateTestResults(Dictionary <int, List <UserAnswer> > allAnswers,
                                                              Dictionary <int, List <UserAnswer> > userAnswers,
                                                              List <UserQuestionAnswersViewModel> questionList,
                                                              out TestResultViewModel testResult)
        {
            object lockObj = new object();

            lock (lockObj)
            {
                testResult = null;
                try
                {
                    // I. Check.
                    if (allAnswers.Count == 0 || userAnswers.Count == 0)
                    {
                        return(new OperationDetails(false, "Parameters allAnswers and (or) userAnswers is empty.", "PLRepository.CalculateTestResults"));
                    }

                    // II. Get the test results and set them to testResult var .
                    testResult = new TestResultViewModel();
                    TestResultDetailViewModel testResultDetail;
                    int  testScore      = 0;
                    int  questionWeight = 0;
                    bool isProperAnswer = false;
                    int  maxScore       = 0;
                    foreach (var item in allAnswers)
                    {
                        isProperAnswer = IsProperAnswer(questionList.Find(question => question.QuestionId == item.Key).AnswerType,
                                                        userAnswers[item.Key],
                                                        allAnswers[item.Key]);
                        testResultDetail = new TestResultDetailViewModel()
                        {
                            QuestionId     = item.Key,
                            IsProperAnswer = isProperAnswer
                        };
                        questionWeight = questionList.Find(question => question.QuestionId == item.Key).QuestionWeight;
                        if (isProperAnswer)
                        {
                            testScore += questionWeight;
                        }
                        maxScore += questionWeight;
                        testResult.TestResultDetails.Add(testResultDetail);
                    }
                    testResult.MaxScore = maxScore;
                    testResult.Result   = testScore;
                    return(new OperationDetails(true, "Method completed successfully.", "PLRepository.CalculateTestResults"));
                }
                catch (Exception ex)
                {
                    testResult = null;
                    return(new OperationDetails(false, ex.Message, "PLRepository.CalculateTestResults"));
                }
            }
        }
Example #24
0
        public async Task <IActionResult> Testing(TestingViewModel model)
        {
            List <Answer> answers = new List <Answer>();

            if (model.Var1IsCorrect)
            {
                answers.Add(new Answer {
                    AttemptId = model.AttemptId, VariantId = model.Var1Id
                });
            }
            if (model.Var2IsCorrect)
            {
                answers.Add(new Answer {
                    AttemptId = model.AttemptId, VariantId = model.Var2Id
                });
            }
            if (model.Var3IsCorrect)
            {
                answers.Add(new Answer {
                    AttemptId = model.AttemptId, VariantId = model.Var3Id
                });
            }
            if (model.Var4IsCorrect)
            {
                answers.Add(new Answer {
                    AttemptId = model.AttemptId, VariantId = model.Var4Id
                });
            }
            await db.Answers.AddRangeAsync(answers);

            db.SaveChanges();
            Test test = await db.Tests.Include("Questions").Include("Questions.Variants").FirstOrDefaultAsync(t => t.Id == model.TestId);

            if (model.Numb != test.Questions.Count - 1)
            {
                TestingViewModel newModel = GetQuest(model.Numb + 1, model.TestId, model.AttemptId);
                return(View(newModel));
            }
            else
            {
                Attempt attempt = await db.Attempts.Include("Answers").Include("Answers.Variant").FirstOrDefaultAsync(t => t.Id == model.AttemptId);

                int a = attempt.Answers.Where(t => t.Variant.IsCorrect).Count();
                int b = attempt.Answers.Count;
                TestResultViewModel result = new TestResultViewModel
                {
                    Id       = model.TestId,
                    TestName = test.Name,
                    Result   = (double)a / b * 100
                };
                return(View("TestResult", result));
            }
        }
Example #25
0
 public bool SaveTestResult(TestResultViewModel testResult, int userId, int?topicId)
 {
     context.Scores.Add(new Score()
     {
         Detail   = testResult.Detail,
         Score1   = testResult.Score,
         TestDate = DateTime.Now,
         TopicId  = topicId,
         UserId   = userId
     });
     return(context.SaveChanges() > 0);
 }
Example #26
0
 public static TestResultDTO ToBllTestResult(this TestResultViewModel testResultViewModel)
 {
     return(new TestResultDTO()
     {
         Id = testResultViewModel.Id,
         Name = testResultViewModel.Name,
         GoodAnswers = testResultViewModel.GoodAnswers,
         BadAnswers = testResultViewModel.BadAnswers,
         DateCompleted = testResultViewModel.DateComleted,
         User = testResultViewModel.User
     });
 }
Example #27
0
        async public Task TestCard(FileViewModel hostConfigFile, FileViewModel cardFile)
        {
            var renderResult = await UWPTestLibrary.RenderTestHelpers.RenderCard(cardFile, hostConfigFile, new Dictionary <string, AdaptiveCards.Rendering.Uwp.IAdaptiveCardResourceResolver>());

            if (renderResult.Tree != null)
            {
                UWPTestLibrary.ImageWaiter imageWaiter = new ImageWaiter(renderResult.Tree);

                StackPanel stackPanel = new StackPanel();
                stackPanel.Children.Add(renderResult.Tree);

                Border border = new Border();
                border.Width = renderResult.CardWidth;
                border.Child = stackPanel;
                (Window.Current.Content as Frame).Content = border;

                await imageWaiter.WaitOnAllImagesAsync();
            }

            StorageFile imageResultFile = null;
            StorageFile jsonResultFile  = null;

            if (renderResult.Error == null)
            {
                imageResultFile = await _tempResultsFolder.CreateFileAsync("Result.png", CreationCollisionOption.GenerateUniqueName);

                jsonResultFile = await _tempResultsFolder.CreateFileAsync("Result.json", CreationCollisionOption.GenerateUniqueName);

                await UWPTestLibrary.RenderTestHelpers.ResultsToFile(imageResultFile, jsonResultFile, renderResult.RoundTrippedJSON, renderResult.Tree);
            }

            await Task.Delay(10);

            var result = await TestResultViewModel.CreateAsync(
                cardFile : cardFile,
                hostConfigFile : hostConfigFile,
                renderedTestResult : renderResult,
                actualImageFile : imageResultFile,
                actualJsonFile : jsonResultFile,
                expectedFolder : _expectedFolder,
                sourceHostConfigsFolder : _sourceHostConfigsFolder,
                sourceCardsFolder : _sourceCardsFolder);

            // We pass if it's not a new or changed card, and if either the image and json match or they match via error
            bool testPass = !result.Status.NewCard && !result.Status.OriginalMatched &&
                            ((result.Status.ImageMatched && result.Status.JsonRoundTripMatched) || result.Status.MatchedViaError);

            if (!testPass)
            {
                throw new Exception(result.Status.ToString() + ": " + result.HostConfigName + "\\" + result.CardName);
            }
        }
Example #28
0
        // Topic test result details list.
        public async Task <ActionResult> TopicTestResultDetails(int?id)
        {
            try
            {
                // I.Checks.
                // Check id.
                if (!int.TryParse(id.ToString(), out int intId))
                {
                    return(RedirectToAction("Index"));
                }
                // Get TestResultDTO object.
                TestResultDTO testResultDTO = await TestResultService.GetAsync(intId);

                if (testResultDTO == null)
                {
                    return(RedirectToAction("Index"));
                }

                // II. AutoMapper Setup.
                var config = new MapperConfiguration(cfg =>
                {
                    cfg.CreateMap <TestResultDTO, TestResultViewModel>()
                    .ForMember("Id", opt => opt.MapFrom(tr => tr.TestResultId))
                    .ForMember("TestTitle", opt => opt.MapFrom(tr => tr.TestResultDetails.FirstOrDefault().Question.Topic.TopicTitle))
                    .ForMember(tr => tr.UserEmail, option => option.Ignore());
                    cfg.CreateMap <TestResultDetailDTO, TestResultDetailViewModel>()
                    .ForMember("Question", opt => opt.MapFrom(trd => trd.Question.QuestionText))
                    .ForMember("Topic", opt => opt.MapFrom(trd => trd.Question.Topic.TopicTitle));
                });
                IMapper iMapper = config.CreateMapper();

                // III. Set ViewBag properties.
                TestResultViewModel testResult = iMapper.Map <TestResultDTO, TestResultViewModel>(testResultDTO);
                ViewBag.CourseName = testResultDTO.TestResultDetails.FirstOrDefault().Question.Topic.Course.CourseTitle;
                ViewBag.TopicName  = testResultDTO.TestResultDetails.FirstOrDefault().Question.Topic.TopicTitle;
                ViewBag.Result     = testResult.Result * 1000 / testResult.MaxScore;
                ViewBag.MaxScore   = 1000;
                ViewBag.ParentId   = testResultDTO.TestResultDetails.FirstOrDefault().Question.Topic.CourseId;

                // IV. Get data for a view.
                IEnumerable <TestResultDetailDTO>       source = TestResultDetailService.Find(trd => trd.TestResultId == intId);//.ToList();
                IEnumerable <TestResultDetailViewModel> testResultDetailList = iMapper.Map <IEnumerable <TestResultDetailDTO>, IEnumerable <TestResultDetailViewModel> >(source).OrderBy(trd => trd.Topic);

                // V.
                return(View(testResultDetailList));
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
 /// <summary>
 /// Maps TestResultViewModel entity to BllTestResult entity.
 /// </summary>
 /// <param name="testResult"> TestResultViewModel instance.</param>
 /// <returns> BllTestResult instance.</returns>
 public static BllTestResult ToBllTestResult(this TestResultViewModel testResult)
 {
     return(new BllTestResult
     {
         Id = testResult.Id,
         DateTime = testResult.DateTime,
         Grade = testResult.Grade,
         TimeSpent = testResult.TimeSpent,
         UserId = testResult.UserId,
         Test = new BllTest {
             Id = testResult.TestId.GetValueOrDefault()
         }
     });
 }
Example #30
0
        async public Task TestCard(FileViewModel hostConfigFile, FileViewModel cardFile)
        {
            var renderResult = await UWPTestLibrary.RenderTestHelpers.RenderCard(cardFile, hostConfigFile);

            if (renderResult.Item3 != null)
            {
                UWPTestLibrary.ImageWaiter imageWaiter = new ImageWaiter(renderResult.Item3);

                StackPanel stackPanel = new StackPanel();
                stackPanel.Children.Add(renderResult.Item3);

                Border border = new Border();
                border.Width = renderResult.Item4;
                border.Child = stackPanel;
                (Window.Current.Content as Frame).Content = border;

                await imageWaiter.WaitOnAllImagesAsync();
            }

            StorageFile imageResultFile = null;
            StorageFile jsonResultFile  = null;

            if (renderResult.Item1 == null)
            {
                imageResultFile = await _tempResultsFolder.CreateFileAsync("Result.png", CreationCollisionOption.GenerateUniqueName);

                jsonResultFile = await _tempResultsFolder.CreateFileAsync("Result.json", CreationCollisionOption.GenerateUniqueName);

                await UWPTestLibrary.RenderTestHelpers.ResultsToFile(imageResultFile, jsonResultFile, renderResult.Item2, renderResult.Item3);
            }

            await Task.Delay(10);

            var result = await TestResultViewModel.CreateAsync(
                cardFile : cardFile,
                hostConfigFile : hostConfigFile,
                actualError : renderResult.Item1,
                actualImageFile : imageResultFile,
                actualJsonFile : jsonResultFile,
                xamlCard : renderResult.Item3,
                expectedFolder : _expectedFolder,
                sourceHostConfigsFolder : _sourceHostConfigsFolder,
                sourceCardsFolder : _sourceCardsFolder);

            if ((result.Status != TestStatus.Passed) &&
                (result.Status != TestStatus.PassedButSourceWasChanged))
            {
                throw new Exception(result.Status.ToString() + ": " + result.HostConfigName + "\\" + result.CardName);
            }
        }