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);
        }
Example #2
0
        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));
            }
        }
Example #3
0
        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);
        }