public async Task When_POST_blog_post_Then_200_OK_with_non_default_id_is_returned() { var user = UserFactory.CreateUser("User 1"); using (var context = CreateContext()) { context.Users.Add(user); await context.SaveChangesAsync(); } var createRequest = new CreateBlogPostRequest { Authors = new[] { user.Name }, Title = "Post 1" }; var request = new CreateBlogPostsRequest { Posts = new[] { createRequest } }; var(createBlogPostsResponse, httpResponse) = await _client.PostWithResponseAsync <CreateBlogPostsResponse>($"{BASE_ROUTE}", request); Assert.Multiple(() => { Assert.That(httpResponse.StatusCode, Is.EqualTo(HttpStatusCode.OK), "Invalid status code"); Assert.That(createBlogPostsResponse, Is.Not.Null, "Response is null"); Assert.That(createBlogPostsResponse.PostIds, Is.Not.Null, "Post ids result is null"); Assert.That(createBlogPostsResponse.PostIds.Count(), Is.EqualTo(1), "Invalid post ids count"); Assert.That(createBlogPostsResponse.PostIds.Single(), Is.Not.EqualTo(default), "Post id has default value");
public Result <CreateBlogPostResponse> CreateBlogPost(CreateBlogPostRequest request) { using var session = _apiDatabase.SessionFactory().OpenSession(); using var transaction = session.BeginTransaction(IsolationLevel.ReadCommitted); var urlSlugResult = SlugService.FromText(request.Title, request.UrlSlug); if (urlSlugResult.IsFailure) { return(Result <CreateBlogPostResponse> .From(urlSlugResult)); } var blogPost = new BlogPostRecord { Reference = Guid.NewGuid(), Title = request.Title, UrlSlug = urlSlugResult.Value, PostedAt = DateTime.UtcNow, Summary = request.Summary, Content = request.Content }; session.Save(blogPost); transaction.Commit(); return(Result <CreateBlogPostResponse> .Of(new CreateBlogPostResponse { Reference = blogPost.Reference, Title = blogPost.Title, UrlSlug = blogPost.UrlSlug, PostedAt = blogPost.PostedAt, Summary = blogPost.Summary, Content = blogPost.Content })); }
public async Task <IActionResult> CreateBlogPost([FromBody] CreateBlogPostRequest request) { return(Ok(await mediator.Send(request))); }
private CreatePostDto MapToDto(CreateBlogPostRequest request) => new CreatePostDto { Authors = request.Authors, Title = request.Title };
public IActionResult CreateBlogPost([FromBody] CreateBlogPostRequest request) { var result = _blogService.CreateBlogPost(request); return(ToApiResponse(result)); }
public BlogPostApiResult Create(int blogId, CreateBlogPostRequest request) { var url = string.Format("api.ashx/v2/blogs/{0}/posts.json", blogId); return(PostRequest <BlogPostApiResult, CreateBlogPostRequest>(url, request)); }