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