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 string Ping(string sourceUri, string targetUri) { if (sourceUri == null || targetUri == null) { throw new ArgumentNullException(); } Oxite.Models.PostAddress postAddress = pathHelper.GetPostAddressFromUri(new Uri(targetUri)); Oxite.Models.Post post = postService.GetPost(postAddress); if (post == null) { throw new ArgumentException(); } Oxite.Models.Trackback trackback = post.Trackbacks.Where(tb => string.Equals(tb.Url, sourceUri, StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); if (trackback == null) { trackback = new Oxite.Models.Trackback() { Url = sourceUri, Created = DateTime.Now.ToUniversalTime(), Title = string.Empty, BlogName = string.Empty, Body = string.Empty, Source = string.Empty }; postService.AddTrackback(post, trackback); } return("Success"); }
public void EditPostSavesChangesToTextFields() { FakePostService postService = new FakePostService(); FakeUserService userService = new FakeUserService(); Guid postID = Guid.NewGuid(); postService.AddedPosts.Add(new Oxite.Models.Post() { ID = postID, }); Post newPost = new Post() { title = "PostTitle", description = "PostDescription", mt_excerpt = "PostBodyShort", mt_basename = "PostSlug" }; MetaWeblogAPI service = new MetaWeblogAPI(postService, null, userService, null, null); bool success = service.EditPost(postID.ToString(), "test", "test", newPost, false); Assert.True(success); Oxite.Models.Post edited = postService.AddedPosts[0]; Assert.Equal(newPost.title, edited.Title); Assert.Equal(newPost.description, edited.Body); Assert.Equal(newPost.mt_excerpt, edited.BodyShort); Assert.Equal(newPost.mt_basename, edited.Slug); }
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 bool EditPost(string postId, string username, string password, Post post, bool publish) { if (string.IsNullOrEmpty(postId)) { throw new ArgumentException(); } getUser(username, password); Oxite.Models.Post existingPost = postService.GetPost(new Guid(postId)); existingPost.Title = post.title; existingPost.Body = post.description; existingPost.BodyShort = post.mt_excerpt; existingPost.Slug = post.mt_basename; string[] postTags = post.categories ?? new string[] { }; existingPost.Tags = postTags.Select(t => new Oxite.Models.Tag() { Name = t }).ToList(); if (publish && !existingPost.Published.HasValue) { existingPost.Published = DateTime.Now; } postService.EditPost(existingPost); return(true); }
public void GetPostReturnsPost() { FakePostService postService = new FakePostService(); FakeUserService userService = new FakeUserService(); DateTime now = DateTime.Now; Oxite.Models.Post fakePost = new Oxite.Models.Post() { Title = "Title", Body = "Body", Created = DateTime.Now, Published = DateTime.Now, ID = Guid.NewGuid(), Creator = new Oxite.Models.User() { DisplayName = "Test User", Name = "user" }, BodyShort = "Excerpt", Slug = "Slug" }; fakePost.Area = new Oxite.Models.Area() { ID = Guid.NewGuid(), Name = "Blog1", DisplayName = "Blog One" }; fakePost.Tags = new List <Oxite.Models.Tag>(new[] { new Oxite.Models.Tag() { ID = Guid.NewGuid(), Name = "Tag1" }, new Oxite.Models.Tag() { ID = Guid.NewGuid(), Name = "Tag2" } }); postService.AddedPosts.Add(fakePost); MetaWeblogAPI service = new MetaWeblogAPI(postService, null, userService, null, null); Post post = service.GetPost(fakePost.ID.ToString(), "test", "test"); Assert.NotNull(post); Assert.Equal(fakePost.Title, post.title); Assert.Equal(fakePost.Body, post.description); Assert.Equal(fakePost.Created, post.dateCreated); Assert.Equal(fakePost.Creator.ID, new Guid(post.userid)); Assert.Equal(fakePost.BodyShort, post.mt_excerpt); Assert.Equal(fakePost.Slug, post.mt_basename); foreach (string category in post.categories) { Assert.Contains <string>(category, fakePost.Tags.Select(t => t.Name)); } }
public bool DeletePost(string appkey, string postid, string username, string password, bool publish) { getUser(username, password); Oxite.Models.Post post = postService.GetPost(new Guid(postid)); postService.RemovePost(post); return(true); }
public Post GetPost(string postId, string username, string password) { getUser(username, password); Oxite.Models.Post post = postService.GetPost(new Guid(postId)); if (post == null) { throw new ArgumentOutOfRangeException(); } return(ModelPostToServicePost(post)); }
private static Post ModelPostToServicePost(Oxite.Models.Post post) { return(new Post { categories = post.Tags.Select(t => t.Name).ToArray(), dateCreated = post.Created.Value, description = post.Body, mt_basename = post.Slug, mt_excerpt = post.BodyShort, postid = post.ID.ToString(), title = post.Title, userid = post.Creator.ID.ToString() }); }
public void GetRecentPostsReturnsNumberOfPostsInBlog() { FakeUserService userService = new FakeUserService(); FakePostService postService = new FakePostService(); Guid areaID = Guid.NewGuid(); Oxite.Models.Post post1 = new Oxite.Models.Post() { ID = Guid.NewGuid(), Creator = new Oxite.Models.User(), Area = new Oxite.Models.Area() { ID = areaID }, Slug = "Post1", Created = DateTime.Now, Tags = new List <Oxite.Models.Tag>() }; Oxite.Models.Post post2 = new Oxite.Models.Post() { ID = Guid.NewGuid(), Creator = new Oxite.Models.User(), Area = new Oxite.Models.Area() { ID = areaID }, Slug = "Post2", Created = DateTime.Now, Tags = new List <Oxite.Models.Tag>() }; postService.AddedPosts.AddRange(new[] { post1, post2 }); MetaWeblogAPI service = new MetaWeblogAPI(postService, null, userService, null, null); Post[] posts = service.GetRecentPosts(areaID.ToString(), "test", "test", 2); Assert.NotNull(posts); Assert.Equal(2, posts.Length); Assert.Contains <Guid>(post1.ID, posts.Select(p => new Guid(p.postid))); Assert.Contains <Guid>(post2.ID, posts.Select(p => new Guid(p.postid))); }
public void EditPostEditsTagList() { FakePostService postService = new FakePostService(); FakeUserService userService = new FakeUserService(); Guid postID = Guid.NewGuid(); postService.AddedPosts.Add(new Oxite.Models.Post() { ID = postID, Title = "PreTitle", Body = "PreBody", BodyShort = "PreBodyShort", Tags = new List <Oxite.Models.Tag>(new Oxite.Models.Tag[] { new Oxite.Models.Tag() { Name = "Old1" }, new Oxite.Models.Tag() { Name = "Both1" } }) }); Post newPost = new Post() { categories = new[] { "New1", "Both1" }, title = "PostTitle", description = "PostDescription", mt_excerpt = "PostBodyShort" }; MetaWeblogAPI service = new MetaWeblogAPI(postService, null, userService, null, null); service.EditPost(postID.ToString(), "test", "test", newPost, false); Oxite.Models.Post edited = postService.AddedPosts[0]; Assert.Equal(2, edited.Tags.Count()); Assert.Contains("New1", edited.Tags.Select(t => t.Name)); Assert.Contains("Both1", edited.Tags.Select(t => t.Name)); }
public void NewPostSetsCreatorToUser() { 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); service.NewPost(areaID.ToString(), "test", "test", new Post(), false); Oxite.Models.Post newPost = postService.AddedPosts[0]; Assert.Equal("test", newPost.Creator.Name); }
public string NewPost(string blogId, string username, string password, Post post, bool publish) { Oxite.Models.User user = getUser(username, password); Oxite.Models.Area area = areaService.GetArea(new Guid(blogId)); Oxite.Models.Post newPost = new Oxite.Models.Post { Title = post.title, Body = post.description, Created = post.dateCreated == default(DateTime) ? DateTime.Now : post.dateCreated, Slug = string.IsNullOrEmpty(post.mt_basename) ? expressions.Slugify(post.title) : post.mt_basename, BodyShort = post.mt_excerpt, Creator = user, State = Oxite.Models.EntityState.Normal }; if (publish) { newPost.Published = DateTime.Now; } if (post.categories != null) { newPost.Tags = new List <Oxite.Models.Tag>(post.categories.Select(s => new Oxite.Models.Tag() { Name = s })); } postService.AddPost(newPost); Oxite.Models.Post createdPost = postService.GetPost(new Oxite.Models.PostAddress(area.Name, newPost.Slug)); return(createdPost.ID.ToString()); }