public async Task AvailableBooksOnGet_WhenEntitiesExist_ReturnsViewResult() { //Arrange TestDbSeeder.Initialize(_db); TestDbSeeder.SeedBooks(_db); TestDbSeeder.SeedRentals(_db); //Act var result = await _controller.AvailableBooks(); //Assert var books = await _db.Books.Include(b => b.Rentals).ToListAsync(); Assert.NotNull(books); Assert.Equal(TestDbSeeder.Books.Length, books.Count); var rentals = await _db.Rentals.Include(r => r.Book).ToListAsync(); Assert.NotNull(rentals); Assert.Equal(TestDbSeeder.Rentals.Length, books.Count); var availableBooks = books.Where(b => b.Status == Status.Available).ToList(); Assert.NotNull(availableBooks); Assert.Equal(2, availableBooks.Count); var viewResult = Assert.IsType <ViewResult>(result); var model = Assert.IsAssignableFrom <IEnumerable <BookViewModel> >(viewResult.Model); Assert.Equal(availableBooks.Count, model.Count()); }