public void GivenBookId_WhenBookProfileCalled_ReturnBookView()
        {
            // Arrange
            int bookId = 1;
            int userId = 10;

            var book = A.Fake <Book>();

            book.BookId = 1;

            var fakeHttpContext = A.Fake <HttpContextBase>();
            var session         = A.Fake <HttpSessionStateBase>();

            session["userId"] = 7;
            A.CallTo(() => fakeHttpContext.Session).Returns(session);
            ControllerContext context = new ControllerContext(new RequestContext(fakeHttpContext, new RouteData()),
                                                              _bookController);

            _bookController.ControllerContext = context;

            A.CallTo(() => _fakeBookService.GetBookDetails(bookId)).Returns(book);
            A.CallTo(() => _fakeBookService.UserHasCreatedReview(bookId, userId)).Returns(true);
            A.CallTo(() => _fakeBookService.IsOnBookShelf(A <ToRead> ._)).Returns(true);

            // Act
            var result = _bookController.BookProfile(bookId) as ViewResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.That(result.ViewBag.Message, Is.EqualTo("Book Profile"));
            A.CallTo(() => _fakeBookService.GetBookDetails(bookId)).MustHaveHappened(Repeated.Exactly.Once);
        }
        public void GivenBookId_WhenBookProfileCalled_ReturnBookView()
        {
            using (var scope = Container.BeginLifetimeScope())
            {
                // Arrange
                _bookController = scope.Resolve <BooksController>();

                var fakeHttpContext = A.Fake <HttpContextBase>();
                var session         = A.Fake <HttpSessionStateBase>();
                session["userId"] = 7;
                A.CallTo(() => fakeHttpContext.Session).Returns(session);
                ControllerContext context = new ControllerContext(new RequestContext(fakeHttpContext, new RouteData()),
                                                                  _bookController);

                _bookController.ControllerContext = context;

                // Act
                var result = _bookController.BookProfile(11) as ViewResult;

                // Assert
                Assert.IsNotNull(result);
                Assert.IsNotNull(result.Model);
                Assert.IsInstanceOf <BookViewModel>(result.Model);
                Assert.That(result.ViewBag.Message, Is.EqualTo("Book Profile"));
            }
        }