public async Task <IActionResult> PostQuiz(SaveQuiz_QuizDTO quizReceived) { var result = await _quizService.SaveQuizAsync(quizReceived); switch (result._result) { case SaveQuizResponseDTO.RequestResult.Success: return(Ok(result)); case SaveQuizResponseDTO.RequestResult.OwnerNotFound: return(NotFound(result)); default: return(BadRequest(result)); } }
public async Task <SaveQuizResponseDTO> SaveQuizAsync(SaveQuiz_QuizDTO quizReceived) { var result = new SaveQuizResponseDTO(); var quiz = _mapper.Map <Quiz>(quizReceived); quiz.Owner = await _characterRepo.GetCharacterAllAsync(quizReceived.OwnerId); if (quiz.Owner == null) { result._result = SaveQuizResponseDTO.RequestResult.OwnerNotFound; return(result); } if (quiz.Questions.Count == 0) { result._result = SaveQuizResponseDTO.RequestResult.EmptyAtribute; return(result); } foreach (var question in quiz.Questions) { if (question.Answers.Count == 0) { result._result = SaveQuizResponseDTO.RequestResult.EmptyAtribute; return(result); } if (!ValidateQuestion(question)) { result._result = SaveQuizResponseDTO.RequestResult.QuestionWithoutCorrectAnswer; return(result); } } _quizRepo.AddQuiz(quiz); try { await _quizRepo.SaveChangesAsync(); result._result = SaveQuizResponseDTO.RequestResult.Success; result.Quiz = _mapper.Map <QuizReadDTO>(quiz); } catch (Exception) { result._result = SaveQuizResponseDTO.RequestResult.BadRequest; } return(result); }
public async Task Test_PostQuiz_Success(long ownerId) { 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 quizDTO = new SaveQuiz_QuizDTO { Title = "Teste", OwnerId = ownerId, }; var question1DTO = new SaveQuiz_QuestionDTO { Text = "Test Question", Answers = new List <SaveQuiz_AnswerDTO>() { new SaveQuiz_AnswerDTO { Text = "Empty", IsCorrect = true }, new SaveQuiz_AnswerDTO { Text = "Empty", IsCorrect = true } } }; var question2DTO = new SaveQuiz_QuestionDTO { Text = "Test Question", Answers = new List <SaveQuiz_AnswerDTO>() { new SaveQuiz_AnswerDTO { Text = "Empty", IsCorrect = false }, new SaveQuiz_AnswerDTO { Text = "Empty", IsCorrect = true } } }; quizDTO.Questions.Add(question1DTO); quizDTO.Questions.Add(question2DTO); var quizCountBefore = await context.Quizzes.CountAsync(); var questionCountBefore = await context.Questions.CountAsync(); var answerCountBefore = await context.Answers.CountAsync(); var actionResult = await controller.PostQuiz(quizDTO); Assert.IsInstanceOf <OkObjectResult>(actionResult); var quizCountAfter = await context.Quizzes.CountAsync(); var questionCountAfter = await context.Questions.CountAsync(); var answerCountAfter = await context.Answers.CountAsync(); var okResult = actionResult as OkObjectResult; var response = okResult.Value as SaveQuizResponseDTO; Assert.NotNull(response); Assert.AreEqual(SaveQuizResponseDTO.RequestResult.Success.ToString(), response.Result); Assert.AreEqual(quizCountBefore + 1, quizCountAfter); Assert.AreEqual(questionCountBefore + 2, questionCountAfter); Assert.AreEqual(answerCountBefore + 4, answerCountAfter); }