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