public async Task Test_PostQuestion_QuestionWithoutCorrectAnswer(long characterId, long quizId) { var context = GetQuizTestsDatabaseContext(); var controller = new QuizController(new QuizService(new QuizRepository(context), new CharacterRepository(context), new CharacterService(new CharacterRepository(context), new ItemRepository(context), Mapper), Mapper)); var questionDTO = new SaveQuestion_QuestionDTO { QuizId = characterId, CharacterId = quizId, Text = "Test Question", Answers = new List <SaveQuestion_AnswerDTO>() { new SaveQuestion_AnswerDTO { Text = "Empty", IsCorrect = false }, new SaveQuestion_AnswerDTO { Text = "Empty", IsCorrect = false } } }; var actionResult = await controller.PostQuestion(questionDTO); Assert.IsInstanceOf <BadRequestObjectResult>(actionResult); }
public async Task <IActionResult> PostQuestion(SaveQuestion_QuestionDTO questionReceived) { var result = await _quizService.SaveQuestionAsync(questionReceived); switch (result._result) { case SaveQuestionResponseDTO.RequestResult.Success: return(Ok(result)); case SaveQuestionResponseDTO.RequestResult.QuizNotFound: return(NotFound(result)); default: return(BadRequest(result)); } }
public async Task <SaveQuestionResponseDTO> SaveQuestionAsync(SaveQuestion_QuestionDTO questionReceived) { var result = new SaveQuestionResponseDTO(); var quiz = await _quizRepo.GetQuizAsync(questionReceived.QuizId); if (quiz == null) { result._result = SaveQuestionResponseDTO.RequestResult.QuizNotFound; return(result); } if (quiz.Owner == null || quiz.Owner.Id != questionReceived.CharacterId) { result._result = SaveQuestionResponseDTO.RequestResult.CharacterNotOwner; return(result); } var question = _mapper.Map <Question>(questionReceived); if (question.Answers.Count == 0) { result._result = SaveQuestionResponseDTO.RequestResult.EmptyAtribute; return(result); } if (!ValidateQuestion(question)) { result._result = SaveQuestionResponseDTO.RequestResult.QuestionWithoutCorrectAnswer; return(result); } quiz.Questions.Add(question); try { await _quizRepo.SaveChangesAsync(); result._result = SaveQuestionResponseDTO.RequestResult.Success; result.Question = _mapper.Map <QuestionReadDTO>(question); } catch (Exception) { result._result = SaveQuestionResponseDTO.RequestResult.BadRequest; } return(result); }
public async Task Test_PostQuestion_Success(long characterId, long quizId) { var context = GetQuizTestsDatabaseContext(); var controller = new QuizController(new QuizService(new QuizRepository(context), new CharacterRepository(context), new CharacterService(new CharacterRepository(context), new ItemRepository(context), Mapper), Mapper)); var questionDTO = new SaveQuestion_QuestionDTO { QuizId = characterId, CharacterId = quizId, Text = "Test Question", Answers = new List <SaveQuestion_AnswerDTO>() { new SaveQuestion_AnswerDTO { Text = "Empty", IsCorrect = false }, new SaveQuestion_AnswerDTO { Text = "Empty", IsCorrect = true } } }; var questionCountBefore = await context.Questions.CountAsync(); var answerCountBefore = await context.Answers.CountAsync(); var actionResult = await controller.PostQuestion(questionDTO); Assert.IsInstanceOf <OkObjectResult>(actionResult); var questionCountAfter = await context.Questions.CountAsync(); var answerCountAfter = await context.Answers.CountAsync(); var okResult = actionResult as OkObjectResult; var response = okResult.Value as SaveQuestionResponseDTO; Assert.NotNull(response); Assert.AreEqual(SaveQuestionResponseDTO.RequestResult.Success.ToString(), response.Result); Assert.AreEqual(questionCountBefore + 1, questionCountAfter); Assert.AreEqual(answerCountBefore + 2, answerCountAfter); }