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");
Ejemplo n.º 2
0
    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
        }));
    }
Ejemplo n.º 3
0
 public async Task <IActionResult> CreateBlogPost([FromBody] CreateBlogPostRequest request)
 {
     return(Ok(await mediator.Send(request)));
 }
Ejemplo n.º 4
0
 private CreatePostDto MapToDto(CreateBlogPostRequest request)
 => new CreatePostDto
 {
     Authors = request.Authors,
     Title   = request.Title
 };
Ejemplo n.º 5
0
    public IActionResult CreateBlogPost([FromBody] CreateBlogPostRequest request)
    {
        var result = _blogService.CreateBlogPost(request);

        return(ToApiResponse(result));
    }
Ejemplo n.º 6
0
        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));
        }