public static Post CreateNewEntity(PostModel postModel, User author, BloggingSystemContext context) { Post postEntity = new Post() { Title = postModel.Title, Author = author, PostDate = DateTime.Now, Text = postModel.Text }; foreach (var tagName in postModel.Tags) { postEntity.Tags.Add(Extensions.CreateOrLoadTag(tagName.ToLower(), context)); } var titleTags = postModel.Title.Split(WordSeparators, StringSplitOptions.RemoveEmptyEntries); foreach (var titleTagName in titleTags) { if (titleTagName.Length > 1) { postEntity.Tags.Add(Extensions.CreateOrLoadTag(titleTagName.ToLower(), context)); } } return postEntity; }
public void Create_WhenValidPostWithTags_ShouldReturn201CodeAndPostedPost() { PostModel newPost = new PostModel() { Title = "Peshov post", Text = "Pesho posted a new post!!!", Tags = new List<string>() { "tag" } }; var httpResponse = this.httpServer.Post("api/posts", newPost, this.sessionKeyHeader); var postedPost = httpResponse.Content.ReadAsAsync<PostedPost>().Result; Assert.AreEqual(HttpStatusCode.Created, httpResponse.StatusCode); Assert.IsNotNull(httpResponse.Content); Assert.AreEqual(newPost.Title, postedPost.Title); }
public static PostModel ToModel(Post postEntity) { PostModel postModel = new PostModel() { ID = postEntity.ID, Title = postEntity.Title, Text = postEntity.Text, PostDate = postEntity.PostDate, Author = postEntity.Author.DisplayName }; foreach (var commentEntity in postEntity.Comments) { postModel.Comments.Add(CommentsMapper.ToModel(commentEntity)); } foreach (var tag in postEntity.Tags) { postModel.Tags.Add(tag.Name); } return postModel; }
public void Comment_WhenNullComment_ShouldReturn400ErrorResponse() { // Add a post to test PostModel newPost = new PostModel() { Title = "Peshov post", Text = "Pesho posted a new post!!!" }; var createPostResponse = this.httpServer.Post("api/posts", newPost, this.sessionKeyHeader); var postedPost = createPostResponse.Content.ReadAsAsync<PostedPost>().Result; var postID = postedPost.ID; var httpResponse = this.httpServer.Put("api/posts/" + postID + "/comment", null, this.sessionKeyHeader); Assert.AreEqual(HttpStatusCode.BadRequest, httpResponse.StatusCode); }
public void Comment_WhenPostExists_ShouldReturn201CodeAndEmptyContent() { // Add a post to test PostModel newPost = new PostModel() { Title = "Peshov post", Text = "Pesho posted a new post!!!" }; var createPostResponse = this.httpServer.Post("api/posts", newPost, this.sessionKeyHeader); var postedPost = createPostResponse.Content.ReadAsAsync<PostedPost>().Result; CommentModel testComment = new CommentModel() { Text = "Test comment!" }; var postID = postedPost.ID; var httpResponse = this.httpServer.Put("api/posts/" + postID + "/comment", testComment, this.sessionKeyHeader); Assert.AreEqual(HttpStatusCode.OK, httpResponse.StatusCode); Assert.IsNull(httpResponse.Content); }
public void Create_WhenPostWithoutTitle_ShouldReturn400ErrorResponse() { PostModel newPost = new PostModel() { Text = "Pesho posted a new post!!!" }; var httpResponse = this.httpServer.Post("api/posts", newPost, this.sessionKeyHeader); Assert.AreEqual(HttpStatusCode.BadRequest, httpResponse.StatusCode); }
private static bool PostContainsAllTags(PostModel postModel, string[] tagsToSearch) { foreach (var tagToSearch in tagsToSearch) { if (!postModel.Tags.Contains(tagToSearch.ToLower())) { return false; } } return true; }