public ExerciseWrapper PostAnswer([FromBody] ExerciseAnswer answer) { var isRightAnswer = _exerciseHelper.IsRightAnswer(answer); Exercise newExercise = null; ExerciseStatus exerciseStatus; if (isRightAnswer) { if (_exerciseHelper.IsEndOfExercise(answer.Exercise.Rank)) { exerciseStatus = ExerciseStatus.EndOfExercise; } else { newExercise = _exerciseHelper.GetNextExercise(answer.Exercise); exerciseStatus = ExerciseStatus.Continue; } } else { exerciseStatus = ExerciseStatus.IncorrectAnswer; } return(new ExerciseWrapper { Status = exerciseStatus, Exercise = newExercise, TimeOut = _exerciseHelper.GetTimeOut(newExercise != null ? newExercise.Rank : RankLevel.Beginner) }); }
public void PostAnswerTest_Incorrect() { var exerciseHelper = Substitute.For <IExerciseHelper>(); exerciseHelper.GetFirstExercise().Returns(new Exercise { Rank = RankLevel.Beginner }); var exerciseController = new ExerciseController(exerciseHelper); exerciseHelper.IsRightAnswer(Arg.Any <ExerciseAnswer>()).Returns(false); exerciseHelper.IsEndOfExercise(Arg.Any <RankLevel>()).Returns(false); var answer = new ExerciseAnswer { Exercise = new Exercise() }; var wrapper = exerciseController.PostAnswer(answer); Assert.AreEqual(ExerciseStatus.IncorrectAnswer, wrapper.Status); Assert.IsNull(wrapper.Exercise); }
public void PostAnswer_RightAnswer_EndOfQuestions() { var exerciseHelper = Substitute.For <IExerciseHelper>(); exerciseHelper.GetNextExercise(Arg.Any <Exercise>()).Returns(new Exercise { Rank = RankLevel.Advanced }); var exerciseController = new ExerciseController(exerciseHelper); exerciseHelper.IsRightAnswer(Arg.Any <ExerciseAnswer>()).Returns(true); exerciseHelper.IsEndOfExercise(Arg.Any <RankLevel>()).Returns(true); var answer = new ExerciseAnswer { Exercise = new Exercise() }; var wrapper = exerciseController.PostAnswer(answer); Assert.AreEqual(ExerciseStatus.EndOfExercise, wrapper.Status); Assert.IsNull(wrapper.Exercise); }
public bool IsRightAnswer(ExerciseAnswer answer) { return(answer.Answer == answer.Exercise.Operand1 + answer.Exercise.Operand2); }