Example #1
0
        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);
        }
Example #2
0
        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)));
        }
Example #3
0
        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)));
        }
Example #4
0
        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);
        }
Example #5
0
        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)));
        }
Example #6
0
        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);
        }
Example #7
0
        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)));
        }
Example #8
0
        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);
        }