public void RedirectToSubmissionsPage()
        {
            //Arrange
            var mockedView = new Mock <IPublishView>();

            mockedView.Setup(v => v.Model).Returns(new PublishViewModel());
            var mockedPageService      = new Mock <IPageService>();
            var pagePresenterUnderTest = new PublishPresenter(mockedView.Object, mockedPageService.Object);
            var mockedHttpContext      = new Mock <HttpContextBase>();
            var mockedHttpResponseBase = new Mock <HttpResponseBase>();

            pagePresenterUnderTest.HttpContext = mockedHttpContext.Object;
            mockedHttpContext.Setup(x => x.Response).Returns(mockedHttpResponseBase.Object);

            //Act
            mockedView.Raise(v => v.OnDismissPage += null, new PageEventArgs(""));

            //Assert
            mockedHttpResponseBase.Verify(x => x.Redirect("~/submissions"), Times.Once);
        }
        public void CallPublishPageMethodOfPageService()
        {
            //Arrange
            var mockedView = new Mock <IPublishView>();

            mockedView.Setup(v => v.Model).Returns(new PublishViewModel());
            var mockedPageService      = new Mock <IPageService>();
            var pagePresenterUnderTest = new PublishPresenter(mockedView.Object, mockedPageService.Object);
            var mockedHttpContext      = new Mock <HttpContextBase>();
            var mockedHttpResponseBase = new Mock <HttpResponseBase>();

            pagePresenterUnderTest.HttpContext = mockedHttpContext.Object;
            mockedHttpContext.Setup(x => x.Response).Returns(mockedHttpResponseBase.Object);

            //Act
            mockedView.Raise(v => v.OnPublishPage += null, new PublishEventArgs("", ""));

            //Assert
            mockedPageService.Verify(x => x.PublishPage(It.IsAny <string>(), It.IsAny <string>()), Times.Once);
        }
        public void RedirectToPublishedPage()
        {
            //Arrange
            var mockedView = new Mock <IPublishView>();

            mockedView.Setup(v => v.Model).Returns(new PublishViewModel());
            var mockedPageService      = new Mock <IPageService>();
            var pagePresenterUnderTest = new PublishPresenter(mockedView.Object, mockedPageService.Object);
            var mockedHttpContext      = new Mock <HttpContextBase>();
            var mockedHttpResponseBase = new Mock <HttpResponseBase>();

            pagePresenterUnderTest.HttpContext = mockedHttpContext.Object;
            mockedHttpContext.Setup(x => x.Response).Returns(mockedHttpResponseBase.Object);
            string title = "test-title";

            //Act
            mockedView.Raise(v => v.OnPublishPage += null, new PublishEventArgs(title, ""));

            //Assert
            mockedHttpResponseBase.Verify(x => x.Redirect(string.Format("~/page?title={0}", title)), Times.Once);
        }
        public void SetViewModelContentCorrectly()
        {
            //Arrange
            var mockedView = new Mock <IPublishView>();

            mockedView.Setup(v => v.Model).Returns(new PublishViewModel());
            var    mockedPageService         = new Mock <IPageService>();
            var    publishPresenterUnderTest = new PublishPresenter(mockedView.Object, mockedPageService.Object);
            string expectedContent           = "edit content";
            var    page = new SotnWiki.Models.Page()
            {
                Content = expectedContent
            };

            mockedPageService.Setup(x => x.GetSubmissionByTitle(It.IsAny <string>())).Returns(page);

            //Act
            mockedView.Raise(v => v.OnPageGetContent += null, new PageEventArgs(""));

            //Assert
            Assert.AreEqual(expectedContent, mockedView.Object.Model.Content);
        }
        public void SetHttpResponseTo404WhenPageIsNotFound()
        {
            //Arrange
            var mockedView = new Mock <IPublishView>();

            mockedView.Setup(v => v.Model).Returns(new PublishViewModel());
            var mockedPageService         = new Mock <IPageService>();
            var publishPresenterUnderTest = new PublishPresenter(mockedView.Object, mockedPageService.Object);

            mockedPageService.Setup(x => x.GetPageByTitle(It.IsAny <string>())).Returns((SotnWiki.Models.Page)null);
            var mockedHttpContext      = new Mock <HttpContextBase>();
            var mockedHttpResponseBase = new Mock <HttpResponseBase>();

            publishPresenterUnderTest.HttpContext = mockedHttpContext.Object;
            mockedHttpContext.Setup(x => x.Response).Returns(mockedHttpResponseBase.Object);
            mockedHttpResponseBase.SetupSet(x => x.StatusCode = 404).Verifiable();
            mockedHttpResponseBase.SetupSet(x => x.Status     = "404 not found").Verifiable();

            //Act
            mockedView.Raise(v => v.OnPageGetContent += null, new PageEventArgs(""));

            //Assert
            mockedHttpResponseBase.Verify();
        }