public void ArticlesTableReturnsViewWithData()
        {
            // Arrange
            mockRepository.Setup(m => m.Read()).Returns(new[]
            {
                new Article {
                    Id = 2
                },
                new Article {
                    Id = 3
                },
                new Article {
                    Id = 1
                }
            }
                                                        .AsQueryable());

            var controller = new PublishArticlesController(mockRepository.Object, mockMapper.Object);

            // Act
            var result     = controller.ArticlesTable() as PartialViewResult;
            var viewModels = result.ViewData.Model as IEnumerable <ArticleViewModel>;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(3, viewModels.Count());
            Assert.AreEqual(2, viewModels.ElementAt(0).Id);
            Assert.AreEqual(3, viewModels.ElementAt(1).Id);
            Assert.AreEqual(1, viewModels.ElementAt(2).Id);
        }
        public void IndexReturnsView()
        {
            // Arrange
            var controller = new PublishArticlesController(mockRepository.Object, mockMapper.Object);

            // Act
            var result = controller.Index() as ViewResult;

            // Assert
            Assert.IsNotNull(result);
        }
        public void EditReturnsMappedViewModelIfIdExists()
        {
            // Arrange
            var controller = new PublishArticlesController(mockRepository.Object, mockMapper.Object);
            var id         = 2;

            // Act
            var result    = controller.Edit(id) as ViewResult;
            var viewModel = result.ViewData.Model as ArticleViewModel;

            // Assert
            Assert.AreEqual(id, viewModel.Id);
        }
        public void EditReturnsEmptyViewModelIfIdIsZero()
        {
            // Arrange
            var controller = new PublishArticlesController(mockRepository.Object, mockMapper.Object);
            var id         = 0;

            // Act
            var result    = controller.Edit(id) as ViewResult;
            var viewModel = result.ViewData.Model as ArticleViewModel;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(default(int), viewModel.Id);
        }
        private PublishArticlesController GetTestObject()
        {
            var controller = new PublishArticlesController(mockRepository.Object, mockMapper.Object);

            // Mock the user, identity and controller context.
            var identityMock = new Mock <IIdentity>();
            var userMock     = new Mock <IPrincipal>();

            userMock.Setup(u => u.Identity).Returns(identityMock.Object);

            var contextMock = new Mock <HttpContextBase>();

            contextMock.Setup(c => c.User).Returns(userMock.Object);

            var controllerContextMock = new Mock <ControllerContext>();

            controllerContextMock.Setup(c => c.HttpContext).Returns(contextMock.Object);

            controller.ControllerContext = controllerContextMock.Object;

            return(controller);
        }