public void ListByAreaSetsAreaAsContainer()
        {
            FakeCommentService commentService = new FakeCommentService();
            FakePostService    postService    = new FakePostService();
            FakeAreaService    areaService    = new FakeAreaService();

            commentService.AllComments.Add(new Comment());
            commentService.AllComments.Add(new Comment());

            areaService.StoredAreas.Add("test", new Area());

            CommentController controller = new CommentController(postService, commentService, null, areaService)
            {
                ControllerContext = new System.Web.Mvc.ControllerContext()
                {
                    RouteData = new System.Web.Routing.RouteData()
                }
            };

            OxiteViewModelItems <Comment> result = controller.ListByArea(new Area()
            {
                Name = "test"
            });

            Assert.Same(areaService.StoredAreas["test"], result.Container);
        }
        public void ItemReturnsPost()
        {
            FakeAreaService areaService = new FakeAreaService();
            FakePostService postService = new FakePostService();

            Guid postID = Guid.NewGuid();
            Guid areaID = Guid.NewGuid();

            areaService.StoredAreas.Add("test", new Area()
            {
                ID = areaID
            });
            postService.AddedPosts.Add(new Post()
            {
                ID = postID, Slug = "Slug"
            });

            PostController controller = new PostController(postService, null, areaService, null);

            OxiteModelItem <Post> result = controller.Item(new Area()
            {
                Name = "test"
            }, new Post()
            {
                Slug = "Slug"
            });

            Assert.Equal(postID, result.Item.ID);
            Assert.IsType <Area>(result.Container);
            Assert.Equal(areaID, (result.Container as Area).ID);
        }
        public void ListByPostSetsPostAsContainer()
        {
            FakeCommentService commentService = new FakeCommentService();
            FakePostService    postService    = new FakePostService();
            FakeAreaService    areaService    = new FakeAreaService();

            commentService.AllComments.Add(new Comment());
            commentService.AllComments.Add(new Comment());

            postService.AddedPosts.Add(new Post()
            {
                Slug = "test"
            });

            areaService.StoredAreas.Add("test", new Area());

            CommentController controller = new CommentController(postService, commentService, null, areaService)
            {
                ControllerContext = new System.Web.Mvc.ControllerContext()
                {
                    RouteData = new System.Web.Routing.RouteData()
                }
            };

            OxiteViewModelItems <Comment> result = controller.ListByPost(0, 50, new PostAddress("test", "test"), null);

            Assert.Same(postService.AddedPosts[0], result.Container);
        }
        public void NewPostCreatesSlugForEntry()
        {
            FakePostService        postService        = new FakePostService();
            FakeAreaService        areaService        = new FakeAreaService();
            FakeTagService         tagService         = new FakeTagService();
            FakeUserService        userService        = new FakeUserService();
            FakeRegularExpressions regularExpressions = new FakeRegularExpressions();
            Guid areaID = Guid.NewGuid();

            areaService.StoredAreas.Add("test", new Oxite.Models.Area()
            {
                ID = areaID
            });

            Post newPost = new Post()
            {
                title = "This is a test", description = "A Test", dateCreated = DateTime.Now, mt_basename = ""
            };

            MetaWeblogAPI service = new MetaWeblogAPI(postService, areaService, userService, null, regularExpressions);

            service.NewPost(areaID.ToString(), "test", "test", newPost, false);

            Oxite.Models.Post savedPost = postService.AddedPosts[0];
            Assert.Equal("This-is-a-test", savedPost.Slug);
        }
        public void NewPostAddsPassedCategoriesAsTags()
        {
            FakePostService postService = new FakePostService();
            FakeAreaService areaService = new FakeAreaService();
            FakeTagService  tagService  = new FakeTagService();
            FakeUserService userService = new FakeUserService();
            Guid            areaID      = Guid.NewGuid();
            Guid            tag1ID      = Guid.NewGuid();
            Guid            tag2ID      = Guid.NewGuid();

            areaService.StoredAreas.Add("test", new Oxite.Models.Area()
            {
                ID = areaID
            });

            Post newPost = new Post()
            {
                categories  = new[] { "Test1", "Test2" },
                title       = "Test",
                description = "A Test",
                dateCreated = DateTime.Now,
                mt_basename = "test"
            };

            MetaWeblogAPI service = new MetaWeblogAPI(postService, areaService, userService, null, null);

            service.NewPost(areaID.ToString(), "test", "test", newPost, false);

            Assert.Equal(1, postService.AddedPosts.Count);

            Oxite.Models.Post savedPost = postService.AddedPosts[0];
            Assert.Equal(2, savedPost.Tags.Count);
            Assert.Contains("Test1", savedPost.Tags.Select(t => t.Name));
            Assert.Contains("Test2", savedPost.Tags.Select(t => t.Name));
        }
        public void RsdHasSiteAbsoluteUrlWhenPathInSiteHost()
        {
            FakeAreaService areaService = new FakeAreaService();

            areaService.StoredAreas.Add("test", new Oxite.Models.Area()
            {
                ID = Guid.NewGuid(), Name = "test"
            });

            RouteCollection routes = new RouteCollection();

            routes.Add("Posts", new Route("", new MvcRouteHandler()));

            UrlHelper helper = new UrlHelper(new RequestContext(new FakeHttpContext(new Uri("http://oxite.net/blog"), "~/"), new RouteData()), routes);

            Site site = new Site()
            {
                Host = new Uri("http://oxite.net/blog")
            };

            AreaController controller = new AreaController(site, areaService, null, null, null, null)
            {
                Url = helper
            };

            ContentResult result = controller.Rsd("test");

            XDocument  rsdDoc       = XDocument.Parse(result.Content);
            XNamespace rsdNamespace = "http://archipelago.phrasewise.com/rsd";
            XElement   rootElement  = rsdDoc.Element(rsdNamespace + "rsd");

            Assert.Equal("http://oxite.net/blog/MetaWeblog.svc", rootElement.Descendants(rsdNamespace + "api").First().Attribute("apiLink").Value);
        }
        public void RsdReturnsXmlContentType()
        {
            FakeAreaService areaService = new FakeAreaService();

            areaService.StoredAreas.Add("test", new Oxite.Models.Area()
            {
                ID = Guid.NewGuid(), Name = "test"
            });

            RouteCollection routes = new RouteCollection();

            routes.Add("Posts", new Route("", new MvcRouteHandler()));

            UrlHelper helper = new UrlHelper(new RequestContext(new FakeHttpContext(new Uri("http://oxite.net/"), "~/"), new RouteData()), routes);

            Site site = new Site()
            {
                Host = new Uri("http://oxite.net")
            };

            AreaController controller = new AreaController(site, areaService, null, null, null, null)
            {
                Url = helper
            };

            ContentResult result = controller.Rsd("test");

            Assert.Equal("text/xml", result.ContentType);
        }
        public void NewPostAddsToService()
        {
            FakePostService postService = new FakePostService();
            FakeAreaService areaService = new FakeAreaService();
            FakeTagService  tagService  = new FakeTagService();
            FakeUserService userService = new FakeUserService();
            Guid            areaID      = Guid.NewGuid();

            areaService.StoredAreas.Add("test", new Oxite.Models.Area()
            {
                ID = areaID
            });

            MetaWeblogAPI service = new MetaWeblogAPI(postService, areaService, userService, null, null);

            Post newPost = new Post()
            {
                title = "Test", description = "A Test", dateCreated = DateTime.Now, mt_basename = "test"
            };
            string postIDString = service.NewPost(areaID.ToString(), "test", "test", newPost, false);

            Assert.NotNull(postIDString);
            Assert.Equal(1, postService.AddedPosts.Count);
            Assert.Equal(postService.AddedPosts[0].ID.ToString(), postIDString);
            Assert.Equal("Test", postService.AddedPosts[0].Title);
            Assert.Equal("A Test", postService.AddedPosts[0].Body);
            Assert.Equal(newPost.dateCreated, postService.AddedPosts[0].Created);
            Assert.Equal("test", postService.AddedPosts[0].Slug);
            Assert.Equal(Oxite.Models.EntityState.Normal, postService.AddedPosts[0].State);
        }
        public void ListByPostReturnsListOfComments()
        {
            FakeCommentService commentService = new FakeCommentService();
            FakePostService    postService    = new FakePostService();
            FakeAreaService    areaService    = new FakeAreaService();

            commentService.AllComments.Add(new Comment());
            commentService.AllComments.Add(new Comment());

            postService.AddedPosts.Add(new Post()
            {
                Slug = "test"
            });

            areaService.StoredAreas.Add("test", new Area());

            CommentController controller = new CommentController(postService, commentService, null, areaService)
            {
                ControllerContext = new System.Web.Mvc.ControllerContext()
                {
                    RouteData = new System.Web.Routing.RouteData()
                }
            };

            OxiteViewModelItems <Comment> result = controller.ListByPost(0, 50, new PostAddress("test", "test"), null);

            Assert.Equal(2, result.Items.Count());
            Assert.Same(commentService.AllComments[0], result.Items.ElementAt(0));
            Assert.Same(commentService.AllComments[1], result.Items.ElementAt(1));
            Assert.Same(postService.AddedPosts[0], result.Items.ElementAt(0).Parent);
            Assert.Same(postService.AddedPosts[0], result.Items.ElementAt(1).Parent);
        }
Example #10
0
        public void ListByAreaSetsAreaAsContainer()
        {
            FakePostService postService = new FakePostService();
            FakeAreaService areaService = new FakeAreaService();

            postService.AllComments.Add(new ParentAndChild <PostBase, Comment>()
            {
                Parent = new Post(), Child = new Comment()
            });
            postService.AllComments.Add(new ParentAndChild <PostBase, Comment>()
            {
                Parent = new Post(), Child = new Comment()
            });

            areaService.StoredAreas.Add("test", new Area());

            CommentController controller = new CommentController(postService, null, areaService)
            {
                ControllerContext = new System.Web.Mvc.ControllerContext()
                {
                    RouteData = new System.Web.Routing.RouteData()
                }
            };

            OxiteModelList <ParentAndChild <PostBase, Comment> > result = controller.ListByArea(new Area()
            {
                Name = "test"
            });

            Assert.Same(areaService.StoredAreas["test"], result.Container);
        }
        public void RsdReturnsValidRsdDoc()
        {
            FakeAreaService areaService = new FakeAreaService();

            areaService.StoredAreas.Add("test", new Oxite.Models.Area()
            {
                ID = Guid.NewGuid(), Name = "test"
            });

            RouteCollection routes = new RouteCollection();

            routes.Add("Posts", new Route("", new MvcRouteHandler()));

            UrlHelper helper = new UrlHelper(new RequestContext(new FakeHttpContext(new Uri("http://oxite.net/"), "~/"), new RouteData()), routes);

            Site site = new Site()
            {
                Host = new Uri("http://oxite.net")
            };

            AreaController controller = new AreaController(site, areaService, null, null, null, null)
            {
                Url = helper
            };

            ContentResult result = controller.Rsd("test");

            Assert.NotNull(result);

            XDocument  rsdDoc       = XDocument.Parse(result.Content);
            XNamespace rsdNamespace = "http://archipelago.phrasewise.com/rsd";
            XElement   rootElement  = rsdDoc.Element(rsdNamespace + "rsd");

            Assert.NotNull(rootElement);
            Assert.NotNull(rootElement.Attribute("version"));
            Assert.Equal("1.0", rootElement.Attribute("version").Value);
            Assert.Equal("Oxite", rootElement.Descendants(rsdNamespace + "engineName").SingleOrDefault().Value);
            Assert.Equal("http://oxite.net", rootElement.Descendants(rsdNamespace + "engineLink").SingleOrDefault().Value);
            Assert.Equal("http://oxite.net/", rootElement.Descendants(rsdNamespace + "homePageLink").SingleOrDefault().Value);

            XElement apisElement = rootElement.Descendants(rsdNamespace + "apis").SingleOrDefault();

            Assert.NotNull(apisElement);
            Assert.Equal(1, apisElement.Elements().Count());

            XElement apiElement = apisElement.Elements().SingleOrDefault();

            Assert.NotNull(apiElement);
            Assert.Equal(rsdNamespace + "api", apiElement.Name);
            Assert.Equal("MetaWeblog", apiElement.Attribute("name").Value);
            Assert.Equal(areaService.StoredAreas["test"].ID.ToString("N"), apiElement.Attribute("blogID").Value);
            Assert.Equal("true", apiElement.Attribute("preferred").Value);
            Assert.Equal("http://oxite.net/MetaWeblog.svc", apiElement.Attribute("apiLink").Value);
        }
Example #12
0
        public void ListByPostReturnsNullOnBadArea()
        {
            FakeAreaService areaService = new FakeAreaService();

            CommentController controller = new CommentController(null, null, areaService);

            Assert.Null(controller.ListByPost(new Area()
            {
                Name = "test"
            }, null));
        }
        public void ListByAreaReturnsNullOnBadArea()
        {
            FakeCommentService commentService = new FakeCommentService();
            FakeAreaService    areaService    = new FakeAreaService();

            CommentController controller = new CommentController(null, commentService, null, areaService);

            Assert.Null(controller.ListByArea(new Area()
            {
                Name = "test"
            }));
        }
Example #14
0
        public void ItemReturnsNullOnNotFoundArea()
        {
            FakeAreaService areaService = new FakeAreaService();

            PostController controller = new PostController(null, null, areaService, null);

            OxiteModelItem <Post> result = controller.Item(new Area()
            {
                Name = "Test"
            }, null);

            Assert.Null(result);
        }
        public void ItemReturnsNullOnNotFoundPost()
        {
            FakeAreaService areaService = new FakeAreaService();
            FakePostService postService = new FakePostService();

            areaService.StoredAreas.Add("test", new Area());

            PostController controller = new PostController(areaService, postService, null, null, null);

            OxiteViewModelItem <Post> result = controller.Item(new PostAddress("test", "Some-Post"), null);

            Assert.Null(result);
        }
        public void NewPostSetsCreatorToUser()
        {
            FakePostService postService = new FakePostService();
            FakeAreaService areaService = new FakeAreaService();
            FakeTagService  tagService  = new FakeTagService();
            FakeUserService userService = new FakeUserService();
            Guid            areaID      = Guid.NewGuid();

            MetaWeblogAPI service = new MetaWeblogAPI(postService, areaService, userService, null, null);

            service.NewPost(areaID.ToString(), "test", "test", new Post(), false);

            Oxite.Model.Post newPost = postService.AddedPosts[0];
            Assert.Equal("test", newPost.Creator.Name);
        }
Example #17
0
        public void ItemReturnsNullOnNotFoundPost()
        {
            FakeAreaService areaService = new FakeAreaService();
            FakePostService postService = new FakePostService();

            areaService.StoredAreas.Add("test", new Area());

            PostController controller = new PostController(postService, null, areaService, null);

            OxiteModelItem <Post> result = controller.Item(new Area()
            {
                Name = "test"
            }, new Post());

            Assert.Null(result);
        }
Example #18
0
        public void ListByPostReturnsNullOnBadPost()
        {
            FakeAreaService areaService = new FakeAreaService();

            areaService.StoredAreas.Add("test", new Area());

            FakePostService postService = new FakePostService();

            CommentController controller = new CommentController(postService, null, areaService);

            Assert.Null(controller.ListByPost(new Area()
            {
                Name = "test"
            }, new Post()
            {
                Slug = "test"
            }));
        }
Example #19
0
        public void ListByAreaReturnsNullForInvalidArea()
        {
            FakePostService postService = new FakePostService();
            FakeAreaService areaService = new FakeAreaService();

            Area area = new Area()
            {
                Name = "test"
            };

            PostController controller = new PostController(postService, null, areaService, null);

            controller.ControllerContext = new System.Web.Mvc.ControllerContext(new FakeHttpContext("~/"), new RouteData(), controller);

            OxiteModelList <Post> result = controller.ListByArea(null, 10, area, null);

            Assert.Null(result);
        }
        public void NewPostAddsExcerptAsBodyShort()
        {
            FakePostService postService = new FakePostService();
            FakeAreaService areaService = new FakeAreaService();
            FakeTagService  tagService  = new FakeTagService();
            FakeUserService userService = new FakeUserService();
            Guid            areaID      = Guid.NewGuid();

            MetaWeblogAPI service = new MetaWeblogAPI(postService, areaService, userService, null, null);

            Post newPost = new Post()
            {
                mt_excerpt = "Preview", title = "Test", description = "A Test", dateCreated = DateTime.Now, mt_basename = "test"
            };

            service.NewPost(areaID.ToString(), "test", "test", newPost, false);

            Assert.Equal(newPost.mt_excerpt, postService.AddedPosts[0].BodyShort);
        }
        public void NewPostSetsPublishDateToNullIfPublishFalse()
        {
            FakePostService postService = new FakePostService();
            FakeAreaService areaService = new FakeAreaService();
            FakeTagService  tagService  = new FakeTagService();
            FakeUserService userService = new FakeUserService();
            Guid            areaID      = Guid.NewGuid();

            MetaWeblogAPI service = new MetaWeblogAPI(postService, areaService, userService, null, null);

            Post newPost = new Post()
            {
                title = "Test", description = "A Test", dateCreated = DateTime.Now, mt_basename = "test"
            };

            service.NewPost(areaID.ToString(), "test", "test", newPost, false);

            Assert.Null(postService.AddedPosts[0].Published);
        }
Example #22
0
        public void ListByPostReturnsListOfComments()
        {
            FakePostService postService = new FakePostService();
            FakeAreaService areaService = new FakeAreaService();

            postService.AllComments.Add(new ParentAndChild <PostBase, Comment>()
            {
                Parent = new Post(), Child = new Comment()
            });
            postService.AllComments.Add(new ParentAndChild <PostBase, Comment>()
            {
                Parent = new Post(), Child = new Comment()
            });

            postService.AddedPosts.Add(new Post()
            {
                Slug = "test"
            });

            areaService.StoredAreas.Add("test", new Area());

            CommentController controller = new CommentController(postService, null, areaService)
            {
                ControllerContext = new System.Web.Mvc.ControllerContext()
                {
                    RouteData = new System.Web.Routing.RouteData()
                }
            };

            OxiteModelList <ParentAndChild <PostBase, Comment> > result = controller.ListByPost(new Area()
            {
                Name = "test"
            }, new Post()
            {
                Slug = "test"
            });

            Assert.Equal(2, result.List.Count);
            Assert.Same(postService.AllComments[0].Child, result.List[0].Child);
            Assert.Same(postService.AllComments[1].Child, result.List[1].Child);
            Assert.Same(postService.AddedPosts[0], result.List[0].Parent);
            Assert.Same(postService.AddedPosts[0], result.List[1].Parent);
        }
Example #23
0
        public void ListByAreaSetsAreaOnModel()
        {
            FakePostService postService = new FakePostService();
            FakeAreaService areaService = new FakeAreaService();

            Area area = new Area()
            {
                Name = "test"
            };

            areaService.StoredAreas.Add("test", area);

            PostController controller = new PostController(postService, null, areaService, null);

            controller.ControllerContext = new System.Web.Mvc.ControllerContext(new FakeHttpContext("~/"), new RouteData(), controller);

            OxiteModelList <Post> result = controller.ListByArea(null, 10, area, null);

            Assert.Equal(area.Name, result.Container.Name);
        }
        public void NewPostSetsPublishDateIfPublishTrue()
        {
            FakePostService postService = new FakePostService();
            FakeAreaService areaService = new FakeAreaService();
            FakeTagService  tagService  = new FakeTagService();
            FakeUserService userService = new FakeUserService();
            Guid            areaID      = Guid.NewGuid();

            areaService.StoredAreas.Add("test", new Oxite.Models.Area()
            {
                ID = areaID
            });

            MetaWeblogAPI service = new MetaWeblogAPI(postService, areaService, userService, null, null);

            Post newPost = new Post()
            {
                title = "Test", description = "A Test", dateCreated = DateTime.Now, mt_basename = "test"
            };

            service.NewPost(areaID.ToString(), "test", "test", newPost, true);

            Assert.True(DateTime.Today < postService.AddedPosts[0].Published);
        }
        public void GetUsersBlogsReturnsAllAreasForValidUser()
        {
            FakeAreaService areaService = new FakeAreaService();
            FakeUserService userService = new FakeUserService();

            areaService.StoredAreas.Add("test1", new Oxite.Models.Area()
            {
                DisplayName = "Test One", ID = Guid.NewGuid()
            });
            areaService.StoredAreas.Add("test2", new Oxite.Models.Area()
            {
                DisplayName = "Test Two", ID = Guid.NewGuid()
            });

            MetaWeblogAPI service = new MetaWeblogAPI(null, areaService, userService, null, null);

            BlogInfo[] blogs = service.GetUsersBlogs(null, "test", "test");

            Assert.Equal(2, blogs.Length);
            Assert.Contains(areaService.StoredAreas["test1"].ID.ToString(), blogs.Select(b => b.blogid));
            Assert.Contains(areaService.StoredAreas["test2"].ID.ToString(), blogs.Select(b => b.blogid));
            Assert.Contains(areaService.StoredAreas["test1"].DisplayName, blogs.Select(b => b.blogName));
            Assert.Contains(areaService.StoredAreas["test2"].DisplayName, blogs.Select(b => b.blogName));
        }