コード例 #1
0
        public async Task <IActionResult> Create(ExamCreationViewModel viewModel)
        {
            if (!ModelState.IsValid || _context.Questions.Count() < viewModel.QuestionAmount)
            {
                return(BadRequest(ModelState));
            }

            var selectedQuestions = RetrieveQuestions(viewModel.QuestionAmount, viewModel.ModuleId);

            var exam = new Exam
            {
                ModuleId           = viewModel.ModuleId,
                Name               = viewModel.Name,
                Description        = viewModel.Description,
                QuestionAmount     = viewModel.QuestionAmount,
                AuthorizedAttempts = viewModel.AuthorizedAttempts,
                Duration           = viewModel.Duration,
                ClosingDate        = viewModel.ClosingDate,
            };

            await _context.Exams.AddAsync(exam);

            await _context.ExamQuestions.AddRangeAsync(GenerateQuestionsToExamFromQuestionListAndExam(exam, selectedQuestions));

            _context.SaveChanges();

            return(RedirectToAction("Index", "Exams"));
        }
コード例 #2
0
        public IActionResult Create()
        {
            var viewModel = new ExamCreationViewModel();

            viewModel.Questions = _context.Questions.ToList();
            viewModel.Modules   = _context.Modules
                                  .Select(module => new SelectListItem {
                Text = module.Title, Value = "" + module.ModuleId
            })
                                  .ToList();

            return(View(viewModel));
        }
コード例 #3
0
        public async Task Return_Bad_Request_Result_When_ModelState_Is_Invalid_On_Create_Post()
        {
            // Arrange
            var controller = new ExamsController(GetFakeContext(), GetUserManagerMock().Object);

            controller.ModelState.AddModelError("Name", "Required");
            var viewModel = new ExamCreationViewModel();

            // Act
            var result = await controller.Create(viewModel);

            // Assert
            var badRequestResult = Assert.IsType <BadRequestObjectResult>(result);

            Assert.IsType <SerializableError>(badRequestResult.Value);
        }
コード例 #4
0
        public async Task Return_Bad_Request_Result_When_QuestionAmount_Is_Higher_Than_Available_Questions_Amount()
        {
            // Arrange
            var context = GetFakeContext();

            context.Questions.RemoveRange(context.Questions.ToList());

            var controller = new ExamsController(context, GetUserManagerMock().Object);
            var viewModel  = new ExamCreationViewModel();

            viewModel.QuestionAmount = int.MaxValue;

            // Act
            var result = await controller.Create(viewModel);

            // Assert
            var badRequestResult = Assert.IsType <BadRequestObjectResult>(result);

            Assert.IsType <SerializableError>(badRequestResult.Value);
        }