public void CreateThreadPresenter_ShoudPopulateSectionsCorrectly() { var view = new Mock <ICreateThreadView>(); view.SetupAllProperties(); var forumData = new Mock <IForumData>(); var sections = new List <Section>() { new Section() { Name = "Important", Id = 1 }, new Section() { Name = "Interests", Id = 2 } }; var expected = new List <string>() { "Important", "Interests" }; forumData.Setup(x => x.SectionsRepository.GetAllSections()).Returns(sections.AsQueryable); var presenter = new CreateThreadPresenter(view.Object, forumData.Object); view.Raise(v => v.Load += null, new EventArgs()); CollectionAssert.AreEqual(expected, view.Object.Model.Sections); }
public void CreateThreadPresenter_ShouldCreateThreadCorrectly() { var view = new Mock <ICreateThreadView>(); view.SetupAllProperties(); var httpContex = new Mock <HttpContextBase>(); var forumData = new Mock <IForumData>(); var user = new Mock <IPrincipal>(); var threadsRepository = new Mock <IThreadsRepository>(); var section = new Section() { Name = "TestSection" }; forumData.Setup(s => s.SectionsRepository.GetSectionByName(It.IsAny <string>())).Returns(section); httpContex.Setup(c => c.User).Returns(user.Object); forumData.Setup(f => f.ThreadsRepository).Returns(threadsRepository.Object); var presenter = new CreateThreadPresenter(view.Object, forumData.Object) { HttpContext = httpContex.Object }; var testContent = "TestContent Should be at least 50 characters long!!!"; view.Raise(v => v.Create += null, new ThreadEventArgs("TestTitle", testContent, "TestSection", 1)); threadsRepository.Verify(t => t.CreateThread(It.Is <Thread>(x => x.Title == "TestTitle" && x.Contents == testContent && x.Section == section))); }
public void CreateThreadPresenter_ShouldTrimWhitespacesFromContent() { var view = new Mock <ICreateThreadView>(); view.SetupAllProperties(); var forumData = new Mock <IForumData>(); var threadsRepository = new Mock <IThreadsRepository>(); var section = new Section() { Name = "TestSection" }; forumData.Setup(s => s.SectionsRepository.GetSectionByName(It.IsAny <string>())).Returns(section); forumData.Setup(f => f.ThreadsRepository).Returns(threadsRepository.Object); var presenter = new CreateThreadPresenter(view.Object, forumData.Object); var expectContent = "TestContent Should be at least 50 characters long!!"; var testContent = " TestContent Should be at least 50 characters long!! "; view.Raise(v => v.Create += null, new ThreadEventArgs("TestTitle", testContent, "TestSection", 1)); threadsRepository.Verify(r => r.CreateThread(It.Is <Thread>(t => t.Contents == expectContent))); }
public void CreateThreadPresenter_ShouldReturnErrorMessageWhenThereIsNoUser() { var view = new Mock <ICreateThreadView>(); view.SetupAllProperties(); var httpContex = new Mock <HttpContextBase>(); var forumData = new Mock <IForumData>(); var threadsRepository = new Mock <IThreadsRepository>(); var section = new Section() { Name = "TestSection" }; forumData.Setup(s => s.SectionsRepository.GetSectionByName(It.IsAny <string>())).Returns(section); forumData.Setup(f => f.ThreadsRepository).Returns(threadsRepository.Object); var presenter = new CreateThreadPresenter(view.Object, forumData.Object) { HttpContext = httpContex.Object }; var testContent = "TestContent Should be at least 50 characters long!"; view.Raise(v => v.Create += null, new ThreadEventArgs("TestTitle", testContent, "TestSection", 0)); Assert.AreEqual("Please, log in!", view.Object.Model.Error); }
public void CreateThreadPresenter_ShouldThrowIfConnectionProblem() { var view = new Mock <ICreateThreadView>(); view.SetupAllProperties(); var forumData = new Mock <IForumData>(); var sectionsRepository = new Mock <ISectionsRepository>(); sectionsRepository.Setup(r => r.GetSectionByName(It.IsAny <string>())).Throws(new Exception()); forumData.Setup(f => f.SectionsRepository).Returns(sectionsRepository.Object); var presenter = new CreateThreadPresenter(view.Object, forumData.Object); Assert.Throws <HttpException>(() => view.Raise(v => v.Create += null, new ThreadEventArgs("TestTitle", "TestContent", "TestSection", 1))); }
public void CreateThreadPresenter_WhenContentIsOutOfRange_ShouldTransferToErrorPage(string content) { var view = new Mock <ICreateThreadView>(); view.SetupAllProperties(); var forumData = new Mock <IForumData>(); var threadsRepository = new Mock <IThreadsRepository>(); var section = new Section() { Name = "TestSection" }; forumData.Setup(s => s.SectionsRepository.GetSectionByName(It.IsAny <string>())).Returns(section); forumData.Setup(f => f.ThreadsRepository).Returns(threadsRepository.Object); var presenter = new CreateThreadPresenter(view.Object, forumData.Object); view.Raise(v => v.Create += null, new ThreadEventArgs("TestTitle", content, "TestSection", 1)); StringAssert.Contains("Content must be between", view.Object.Model.Error); }
public void CreateThreadPresenter_ThreadsRepositoryShouldTransferTo500_IfSomethingGoesWrong() { var view = new Mock <ICreateThreadView>(); view.SetupAllProperties(); var forumData = new Mock <IForumData>(); var threadsRepository = new Mock <IThreadsRepository>(); var section = new Section() { Name = "TestSection" }; forumData.Setup(s => s.SectionsRepository.GetSectionByName(It.IsAny <string>())).Returns(section); forumData.Setup(f => f.ThreadsRepository).Returns(threadsRepository.Object); threadsRepository.Setup(t => t.CreateThread(It.IsAny <Thread>())).Throws(new Exception()); var presenter = new CreateThreadPresenter(view.Object, forumData.Object); var testContent = "TestContent Should be at least 50 characters long!!!"; Assert.Throws <HttpException>(() => view.Raise(v => v.Create += null, new ThreadEventArgs("TestTitle", testContent, "TestSection", 1))); }
public void CreateThreadPresenter_WhenTitleIsOutOfRange_ShouldReturnErrorMessage(string title) { var view = new Mock <ICreateThreadView>(); view.SetupAllProperties(); var forumData = new Mock <IForumData>(); var threadsRepository = new Mock <IThreadsRepository>(); var section = new Section() { Name = "TestSection" }; forumData.Setup(s => s.SectionsRepository.GetSectionByName(It.IsAny <string>())).Returns(section); forumData.Setup(f => f.ThreadsRepository).Returns(threadsRepository.Object); var presenter = new CreateThreadPresenter(view.Object, forumData.Object); var testContent = "TestContent Should be at least 50 characters long!!!"; view.Raise(v => v.Create += null, new ThreadEventArgs(title, testContent, "TestSection", 1)); StringAssert.Contains("Title must be between", view.Object.Model.Error); }