Exemple #1
0
        public void Accepts_question_submission_and_produces_correct_evaluation(QuestionSubmissionDTO submission, bool expectedCorrectness)
        {
            using var scope = _factory.Services.CreateScope();
            var controller = new SubmissionController(_factory.Services.GetRequiredService <IMapper>(), scope.ServiceProvider.GetRequiredService <ISubmissionService>());
            var dbContext  = scope.ServiceProvider.GetRequiredService <SmartTutorContext>();

            controller.SubmitQuestionAnswers(submission);

            var actualSubmission = dbContext.QuestionSubmissions.OrderBy(s => s.TimeStamp).Last(q => q.QuestionId == submission.QuestionId);

            actualSubmission.IsCorrect.ShouldBe(expectedCorrectness);
        }
Exemple #2
0
 public ActionResult <List <AnswerEvaluationDTO> > SubmitQuestionAnswers(
     [FromBody] QuestionSubmissionDTO submission)
 {
     try
     {
         var evaluation = _submissionService.EvaluateAnswers(_mapper.Map <QuestionSubmission>(submission));
         if (evaluation == null)
         {
             return(NotFound());
         }
         return(Ok(_mapper.Map <List <AnswerEvaluationDTO> >(evaluation)));
     }
     catch (LearnerNotEnrolledInCourse e)
     {
         return(Forbid(e.Message));
     }
 }
Exemple #3
0
        public void Question_and_learner_are_in_different_courses_returns_forbidden_status()
        {
            using var scope = _factory.Services.CreateScope();
            var controller = new SubmissionController(_factory.Services.GetRequiredService <IMapper>(), scope.ServiceProvider.GetRequiredService <ISubmissionService>());
            var submission = new QuestionSubmissionDTO
            {
                QuestionId = 17, Answers = new List <QuestionAnswerDTO>
                {
                    new QuestionAnswerDTO {
                        Id = 2
                    },
                    new QuestionAnswerDTO {
                        Id = 5
                    }
                },
                LearnerId = 4
            };

            controller.SubmitQuestionAnswers(submission).Result.ShouldBeOfType(typeof(ForbidResult));
        }