public void All_WhenShowingView_ThenAllShoesAreDisplayed()
        {
            // Arrange
            var dbContext = new FakeShoeTrackerDbContext();
            var controller = new ShoeController(dbContext);

            IndexSetup(dbContext, controller);

            // Act
            var result = controller.All();

            // Assert
            var viewModels = result.CastModel<ICollection<ShoeDetailViewModel>>();

            AssertAllShoesAreShown(viewModels,dbContext.Shoes);

            foreach (var viewModel in viewModels)
            {
                var matchingShoe = dbContext.Shoes.First(s => s.ShoeId == viewModel.ShoeId);

                AssertCurrentUser(matchingShoe);
                AssertShoeName(viewModel, matchingShoe);
                AssertFirstUsed(viewModel, matchingShoe);
                AssertLastUsed(viewModel, matchingShoe);
                AssertShoesWithWorkoutsCannotBeDeleted(viewModel, matchingShoe);
                AssertShoesWithWorkoutsCannotBeDeleted(viewModel, matchingShoe);
                AssertDistanceUsedIsSumOfWorkouts(viewModel, matchingShoe);
                AssertPercentRemainigIsRatioOfDistanceToWorkouts(viewModel, matchingShoe);
                AssertExpirationDateIsEmptyWhenTheShoeIsNoLongerUsed(viewModel, matchingShoe);
            }
        }