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); }