예제 #1
0
        public ActionResult PlayerGame(PlayerAnswerViewModel answer)
        {
            ViewBag.Answer = answer;
            int  index           = answer.QuestionIndex;
            var  currentQuestion = _questionRepository.Questions.ElementAt(index); //see lower
            bool endOfGame       = true;

            if (currentQuestion.IsAnswerCorrect(answer.PlayerAnswer))
            {
                endOfGame = false;
            }
            else
            {
                if (index == 14)
                {
                    index--;
                }
            }
            if (index == 14)
            {
                endOfGame = true; //assign true if the last answer was correct
            }
            int newIndex = index + 1;
            var game     = new GameViewModel
            {
                EndOfGame     = endOfGame,
                QuestionIndex = newIndex,                                                                  //uncomment when all quests will be able
                Question      = newIndex == 15 ? null : _questionRepository.Questions.ElementAt(newIndex), //ElementAt(newIndex)
                GameSteps     = null
            };
            string response = JsonConvert.SerializeObject(game);

            return(Json(response));
        }
        public void HomeController_ReturnsPlayerGameResponse()
        {
            var controller = new HomeController(_questionsMock.Object, _stepsMock.Object, null, null);

            controller.ControllerContext = new ControllerContext(_fakeContext, new RouteData(), controller);
            var playerAnswerModel = new PlayerAnswerViewModel();

            var result = controller.PlayerGame(playerAnswerModel) as JsonResult;

            Assert.IsInstanceOf <JsonResult>(result);
        }
        public void HomeController_ReturnsEndOfGameResponse_WithIncorrectAnswer()
        {
            var controller = new HomeController(_questionsMock.Object, _stepsMock.Object, null, null);

            controller.ControllerContext = new ControllerContext(_fakeContext, new RouteData(), controller);
            var playerAnswerModel = new PlayerAnswerViewModel
            {
                PlayerAnswer  = "1_3",
                QuestionIndex = 0
            };

            var controllerResult = controller.PlayerGame(playerAnswerModel) as JsonResult;
            var gameViewModel    = JsonConvert.DeserializeObject <GameViewModel>(controllerResult?.Data.ToString());

            Assert.AreEqual(true, gameViewModel.EndOfGame);
        }
        public void OnActionExecuted(ActionExecutedContext filterContext)
        {
            PlayerAnswerViewModel answer = filterContext.Controller.ViewBag.Answer;
            var questionStatistic        = _questionStatisticRepository.Find(answer.QuestionIndex + 1);

            if (questionStatistic == null)
            {
                return;
            }
            questionStatistic.QuestionCounter++;
            int answerId = questionStatistic.Question.Answers
                           .First(a => a.Title == answer.PlayerAnswer).Id;
            var answerStatistic = questionStatistic.AnswerStatistics
                                  .First(a => a.Id == answerId);

            answerStatistic.AnswerCounter++;
            _questionStatisticRepository.SaveChanges();
        }
        public void HomeController_ReturnsNextQuestionResponse_WithCorrectAnswer()
        {
            var controller = new HomeController(_questionsMock.Object, _stepsMock.Object, null, null);

            controller.ControllerContext = new ControllerContext(_fakeContext, new RouteData(), controller);
            var playerAnswerModel = new PlayerAnswerViewModel
            {
                PlayerAnswer  = "1_2",
                QuestionIndex = 0
            };

            var controllerResult   = controller.PlayerGame(playerAnswerModel) as JsonResult;
            var gameViewModel      = JsonConvert.DeserializeObject <GameViewModel>(controllerResult?.Data.ToString());
            var repositoryQuestion = _questionsMock.Object.Questions.ElementAt(1);
            var modelQuestion      = gameViewModel.Question;

            Assert.AreEqual(false, gameViewModel.EndOfGame);
            Assert.AreEqual(repositoryQuestion.Title, modelQuestion.Title);
        }