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); }
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)); } }
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)); }