private void AssertShoesWithWorkoutsCannotBeDeleted(ShoeDetailViewModel viewModel, Shoe shoe)
 {
     Assert.That(viewModel.CanDelete, Is.EqualTo(!shoe.Workouts.Any()));
 }
 private void AssertShoeName(ShoeDetailViewModel viewModel, Shoe shoe)
 {
     Assert.That(viewModel.Name,Is.EqualTo(shoe.Name));
 }
 private void AssertPercentRemainigIsRatioOfDistanceToWorkouts(ShoeDetailViewModel viewModel, Shoe shoe)
 {
     if (shoe.Workouts.Any())
     {
         var expectedPercent = shoe.Workouts.Sum(w => w.Distance)/shoe.MaximumDistance * 100;
         Assert.That(viewModel.PercentRemaining, Is.EqualTo(expectedPercent));
     }
     else
     {
         Assert.That(viewModel.PercentRemaining, Is.EqualTo(0));
     }
 }
 private void AssertLastUsed(ShoeDetailViewModel viewModel, Shoe shoe)
 {
     Assert.That(viewModel.LastUsed, Is.EqualTo(shoe.LastUsed));
 }
 private void AssertExpirationDateIsEmptyWhenTheShoeIsNoLongerUsed(ShoeDetailViewModel viewModel, Shoe matchingShoe)
 {
     if (matchingShoe.LastUsed.HasValue)
     {
         Assert.That(viewModel.ExpirationDate,Is.Null);
     }
 }
 private void AssertDistanceUsedIsSumOfWorkouts(ShoeDetailViewModel viewModel, Shoe shoe)
 {
     if (shoe.Workouts.Any())
     {
         Assert.That(viewModel.DistanceUsed, Is.EqualTo(shoe.Workouts.Sum(w => w.Distance)));
     }
     else
     {
         Assert.That(viewModel.DistanceUsed, Is.EqualTo(0));
     }
 }