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 Test_PostQuestion_QuizNotFound(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 actionResult = await controller.PostQuestion(new SaveQuestion_QuestionDTO { CharacterId = characterId, QuizId = quizId });

            Assert.IsInstanceOf <NotFoundObjectResult>(actionResult);
        }
        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);
        }