Browse Source

CmsKit - Fix updating UrlSlug Check

pull/7226/head
enisn 6 years ago
parent
commit
a83c4f470c
  1. 16
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs
  2. 2
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogPost.cs
  3. 9
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogPostManager.cs
  4. 2
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/IBlogPostManager.cs
  5. 27
      modules/cms-kit/test/Volo.CmsKit.Domain.Tests/Blogs/BlogPostManager_Tests.cs
  6. 4
      modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestData.cs

16
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs

@ -82,16 +82,20 @@ namespace Volo.CmsKit.Admin.Blogs
[Authorize(CmsKitAdminPermissions.BlogPosts.Update)]
public override async Task<BlogPostDto> UpdateAsync(Guid id, CreateUpdateBlogPostDto input)
{
var entity = await BlogPostRepository.GetAsync(id);
var blogPost = await BlogPostRepository.GetAsync(id);
entity.SetTitle(input.Title);
entity.SetUrlSlug(input.UrlSlug);
blogPost.SetTitle(input.Title);
MapToEntity(input, entity);
if (blogPost.UrlSlug != input.UrlSlug)
{
await BlogPostManager.SetSlugUrlAsync(blogPost, input.UrlSlug);
}
await BlogPostManager.UpdateAsync(entity);
MapToEntity(input, blogPost);
return MapToGetOutputDto(entity);
await BlogPostManager.UpdateAsync(blogPost);
return MapToGetOutputDto(blogPost);
}
public virtual async Task SetCoverImageAsync(Guid id, RemoteStreamContent streamContent)

2
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogPost.cs

@ -44,7 +44,7 @@ namespace Volo.CmsKit.Blogs
Title = Check.NotNullOrWhiteSpace(title, nameof(title), BlogPostConsts.MaxTitleLength);
}
public void SetUrlSlug(string urlSlug)
internal void SetUrlSlug(string urlSlug)
{
Check.NotNullOrWhiteSpace(urlSlug, nameof(urlSlug), BlogPostConsts.MaxUrlSlugLength, BlogPostConsts.MinUrlSlugLength);

9
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogPostManager.cs

@ -34,11 +34,16 @@ namespace Volo.CmsKit.Blogs
{
await CheckBlogExistenceAsync(blogPost.BlogId);
await CheckUrlSlugExistenceAsync(blogPost.BlogId, blogPost.UrlSlug);
await blogPostRepository.UpdateAsync(blogPost);
}
public async Task SetSlugUrlAsync(BlogPost blogPost, string newSlug)
{
await CheckUrlSlugExistenceAsync(blogPost.BlogId, newSlug);
blogPost.SetUrlSlug(newSlug);
}
private async Task CheckUrlSlugExistenceAsync(Guid blogId, string urlSlug)
{
if (await blogPostRepository.SlugExistsAsync(blogId, urlSlug))

2
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/IBlogPostManager.cs

@ -8,5 +8,7 @@ namespace Volo.CmsKit.Blogs
Task<BlogPost> CreateAsync(BlogPost blogPost);
Task UpdateAsync(BlogPost blogPost);
Task SetSlugUrlAsync(BlogPost blogPost, string newSlug);
}
}

27
modules/cms-kit/test/Volo.CmsKit.Domain.Tests/Blogs/BlogPostManager_Tests.cs

@ -54,18 +54,39 @@ namespace Volo.CmsKit.Blogs
public async Task UpdateAsync_ShoudlWorkProperly_WithCorrectData()
{
var newTitle = "Yet Another Post";
var newUrlSlug = "yet-another-post";
var blogPost = await blogPostRepository.GetAsync(cmsKitTestData.BlogPost_1_Id);
blogPost.SetTitle(newTitle);
blogPost.SetUrlSlug(newUrlSlug);
await blogPostManager.UpdateAsync(blogPost);
var updated = await blogPostRepository.GetAsync(cmsKitTestData.BlogPost_1_Id);
updated.Title.ShouldBe(newTitle);
updated.UrlSlug.ShouldBe(newUrlSlug);
}
[Fact]
public async Task SetUrlSlugAsync_ShouldWorkProperly_WithNonExistingSlug()
{
var newUrlSlug = "yet-another-post";
var blogPost = await blogPostRepository.GetAsync(cmsKitTestData.BlogPost_1_Id);
await blogPostManager.SetSlugUrlAsync(blogPost, newUrlSlug);
blogPost.UrlSlug.ShouldBe(newUrlSlug);
}
[Fact]
public async Task SetUrlSlugAsync_ShouldThrowException_WithExistingSlug()
{
var blogPost = await blogPostRepository.GetAsync(cmsKitTestData.BlogPost_1_Id);
var exception = await Should.ThrowAsync<BlogPostUrlSlugAlreadyExistException>(async () =>
await blogPostManager.SetSlugUrlAsync(blogPost, cmsKitTestData.BlogPost_2_UrlSlug));
exception.BlogId.ShouldBe(blogPost.BlogId);
exception.UrlSlug.ShouldBe(cmsKitTestData.BlogPost_2_UrlSlug);
}
}
}

4
modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestData.cs

@ -87,8 +87,8 @@ namespace Volo.CmsKit
public Guid BlogPost_2_Id { get; } = Guid.NewGuid();
public string BlogPost_2_Title => "How to use CmsKit?";
public string BlogPost_2_Title => "How to use CmsKit";
public string BlogPost_2_UrlSlug => "how-to-use-cms-kit?";
public string BlogPost_2_UrlSlug => "how-to-use-cms-kit";
}
}

Loading…
Cancel
Save