public void IfThereIsNoCurrentWorkoutAnExceptionIsThrown()
        {
            var ws = new Mock<IWorkoutService>();
            var repo = new Mock<IExerciseRepository>();
            var handler = new AddStrengthCommandHandler(ws.Object, repo.Object);
            var command = new AddStrengthCommand { Weight = 20, ExerciseId = 1, Repetitions = 99, Notes = "foo" };

            ws.Setup(x => x.CurrentWorkout()).Returns<Workout>(null);
            repo.Setup(x => x.Load(1)).Returns(new Exercise(new ExerciseDocument { Description = "exer" }));

            Assert.Throws<ApplicationException>(() => handler.Handle(command));
        }
        public void TheStrengthActivityIsAddedToTheCurrentWorkout()
        {
            var workOut = new Workout(new WorkoutDocument());
            var repo = new Mock<IExerciseRepository>();
            var ws = new Mock<IWorkoutService>();
            var handler = new AddStrengthCommandHandler(ws.Object, repo.Object);
            var command = new AddStrengthCommand { Weight = 20, ExerciseId = 1, Repetitions= 99, Notes = "foo" };

            ws.Setup(x => x.CurrentWorkout()).Returns(workOut);
            repo.Setup(x => x.Load(1)).Returns(new Exercise(new ExerciseDocument { Description = "exer" }));
            handler.Handle(command);

            workOut.StrengthSegments.Count().ShouldEqual(1);
        }
        public ActionResult Strength(AddStrengthInputModel input)
        {
            if (!ModelState.IsValid) return View(input);

            var command = new AddStrengthCommand
                {
                    ExerciseId = input.ExerciseId,
                    Notes = input.Notes,
                    Repetitions = input.Repetitions,
                    Weight = input.Weight
                };

            _commandInvoker.Execute(command);

            return RedirectToAction("Index", "Workout");
        }