public void SetUp()
        {
            repository = new BookRepositoryMock();

            responseMock = new Mock <HttpResponseBase>();

            var peopleRepository     = new RepositoryMock <Person>();
            var publishersRepository = new RepositoryMock <Publisher>();

            editBookModelMapper = new EditBookModelMapper(publishersRepository, peopleRepository, repository, null, new Mock <IIso639LanguageDisplayer>().Object);
            viewBookModelMapper = new ViewBookModelMapper(new Mock <IIso639LanguageDisplayer>().Object);

            controller = new BooksController(repository, viewBookModelMapper, editBookModelMapper, responseMock.Object);

            someBook = new Book
            {
                Id    = 42,
                Title = "Hitching Guide"
            };

            otherBook = new Book
            {
                Id    = 9000,
                Title = "It's over!"
            };
        }
        public async Task GetBooks_CallsRepository()
        {
            BookRepositoryMock.Setup(r => r.Get()).ReturnsAsync(new List <Book>());

            await Controller.Get();

            BookRepositoryMock.Verify(r => r.Get(), Times.Once);
        }
        public async Task GetBooks_ReturnsBooks()
        {
            var fakeBooks = FakeBuilder.CreateMany <Book>().ToList();

            BookRepositoryMock.Setup(r => r.Get()).ReturnsAsync(fakeBooks);

            var expectedResult = fakeBooks.ToRepresentation();
            var result         = await Controller.Get();

            Assert.IsNotNull(result);
            Assert.IsInstanceOf <OkNegotiatedContentResult <ICollection <BookRepresentation> > >(result);
            var resultContent = ((OkNegotiatedContentResult <ICollection <BookRepresentation> >)result).Content;

            Assert.AreEqual(resultContent, expectedResult.ToList());
        }