public void BooksControllerFilterByGenreShouldReturnBooksInGivenGenre() { var books = new List <Book>(); Enumerable.Range(1, 8).ToList().ForEach(i => books.Add(new Book { Title = "Book " + i, Genre = "Fiction" })); var book1 = new Book { Title = "Book 9", Genre = "Poetry" }; books.Add(book1); var book2 = new Book { Title = "Book 10", Genre = "Poetry" }; books.Add(book2); var mockedRepo = new Mock <Repository>(); var expectedBooks = new List <Book> { book1, book2 }; mockedRepo.Setup(repo => repo.Search <Book>(It.IsAny <Expression <Func <Book, bool> > >(), It.IsAny <int>(), It.IsAny <int>())).Returns(expectedBooks); var booksController = new BooksController(mockedRepo.Object); var view = (ViewResult)booksController.Genre("Poetry"); var filterInformation = (FilterInformation)view.Model; var actualBooks = filterInformation.BookInformations.Select(bookInformation => bookInformation.Model).ToList(); Assert.AreEqual(2, actualBooks.Count()); Assert.AreEqual("Poetry", actualBooks.First().Genre); Assert.AreEqual("Poetry", actualBooks.Last().Genre); mockedRepo.Verify(repo => repo.Search <Book>(It.IsAny <Expression <Func <Book, bool> > >(), It.IsAny <int>(), It.IsAny <int>()), Times.Once()); Assert.AreEqual(1, filterInformation.Genres.Count()); Assert.AreEqual("Poetry", filterInformation.Genres.First()); }
public void BooksControllerFilterByGenreShouldReturnBooksInGivenGenre() { var books = new List<Book>(); Enumerable.Range(1, 8).ToList().ForEach(i => books.Add(new Book { Title = "Book " + i, Genre = "Fiction" })); var book1 = new Book { Title = "Book 9", Genre = "Poetry" }; books.Add(book1); var book2 = new Book { Title = "Book 10", Genre = "Poetry" }; books.Add(book2); var mockedRepo = new Mock<Repository>(); var expectedBooks = new List<Book> { book1, book2 }; mockedRepo.Setup(repo => repo.Search<Book>(It.IsAny<Expression<Func<Book, bool>>>(), It.IsAny<int>(), It.IsAny<int>())).Returns(expectedBooks); var booksController = new BooksController(mockedRepo.Object); var view = (ViewResult)booksController.Genre("Poetry"); var filterInformation = (FilterInformation)view.Model; var actualBooks = filterInformation.BookInformations.Select(bookInformation => bookInformation.Model).ToList(); Assert.AreEqual(2, actualBooks.Count()); Assert.AreEqual("Poetry", actualBooks.First().Genre); Assert.AreEqual("Poetry", actualBooks.Last().Genre); mockedRepo.Verify(repo => repo.Search<Book>(It.IsAny<Expression<Func<Book, bool>>>(), It.IsAny<int>(), It.IsAny<int>()), Times.Once()); Assert.AreEqual(1, filterInformation.Genres.Count()); Assert.AreEqual("Poetry", filterInformation.Genres.First()); }