Browse Source

Added blog tests and refactoring

pull/7851/head
Ahmet 6 years ago
parent
commit
17bacf1aa7
  1. 17
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/CreateBlogDto.cs
  2. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/IBlogAdminAppService.cs
  3. 17
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogDto.cs
  4. 4
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogAdminAppService.cs
  5. 39
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Blogs/BlogAdminController.cs
  6. 92
      modules/cms-kit/test/Volo.CmsKit.Application.Tests/Blogs/BlogAdminAppService_Tests.cs
  7. 50
      modules/cms-kit/test/Volo.CmsKit.Domain.Tests/Blogs/BlogManager_Test.cs
  8. 27
      modules/cms-kit/test/Volo.CmsKit.TestBase/Blogs/BlogRepository_Test.cs

17
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/CreateBlogDto.cs

@ -0,0 +1,17 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Validation;
using Volo.CmsKit.Blogs;
namespace Volo.CmsKit.Admin.Blogs
{
public class CreateBlogDto
{
[Required]
[DynamicMaxLength(typeof(BlogConsts), nameof(BlogConsts.MaxNameLength))]
public string Name { get; set; }
[Required]
[DynamicMaxLength(typeof(BlogConsts), nameof(BlogConsts.MaxSlugLength))]
public string Slug { get; set; }
}
}

2
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/IBlogAdminAppService.cs

@ -3,7 +3,7 @@ using Volo.Abp.Application.Services;
namespace Volo.CmsKit.Admin.Blogs
{
public interface IBlogAdminAppService : ICrudAppService<BlogDto, Guid, BlogGetListInput>
public interface IBlogAdminAppService : ICrudAppService<BlogDto, Guid, BlogGetListInput, CreateBlogDto, UpdateBlogDto>
{
}
}

17
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogDto.cs

@ -0,0 +1,17 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Validation;
using Volo.CmsKit.Blogs;
namespace Volo.CmsKit.Admin.Blogs
{
public class UpdateBlogDto
{
[Required]
[DynamicMaxLength(typeof(BlogConsts), nameof(BlogConsts.MaxNameLength))]
public string Name { get; set; }
[Required]
[DynamicMaxLength(typeof(BlogConsts), nameof(BlogConsts.MaxSlugLength))]
public string Slug { get; set; }
}
}

4
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogAdminAppService.cs

@ -44,7 +44,7 @@ namespace Volo.CmsKit.Admin.Blogs
}
[Authorize(CmsKitAdminPermissions.Blogs.Create)]
public virtual async Task<BlogDto> CreateAsync(BlogDto input)
public virtual async Task<BlogDto> CreateAsync(CreateBlogDto input)
{
var blog = await BlogManager.CreateAsync(input.Name, input.Slug);
@ -54,7 +54,7 @@ namespace Volo.CmsKit.Admin.Blogs
}
[Authorize(CmsKitAdminPermissions.Blogs.Update)]
public virtual async Task<BlogDto> UpdateAsync(Guid id, BlogDto input)
public virtual async Task<BlogDto> UpdateAsync(Guid id, UpdateBlogDto input)
{
var blog = await BlogRepository.GetAsync(id);

39
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Blogs/BlogAdminController.cs

@ -1,9 +1,6 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
@ -27,42 +24,40 @@ namespace Volo.CmsKit.Admin.Blogs
BlogAdminAppService = blogAdminAppService;
}
[HttpPost]
[Authorize(CmsKitAdminPermissions.Blogs.Create)]
public Task<BlogDto> CreateAsync(BlogDto input)
{
return BlogAdminAppService.CreateAsync(input);
}
[HttpDelete]
[Route("{id}")]
[Authorize(CmsKitAdminPermissions.Blogs.Delete)]
public Task DeleteAsync(Guid id)
{
return BlogAdminAppService.DeleteAsync(id);
}
[HttpGet]
[Route("{id}")]
[Authorize(CmsKitAdminPermissions.Blogs.Default)]
public Task<BlogDto> GetAsync(Guid id)
{
return BlogAdminAppService.GetAsync(id);
}
[HttpGet]
[Authorize(CmsKitAdminPermissions.Blogs.Default)]
public Task<PagedResultDto<BlogDto>> GetListAsync([FromQuery] BlogGetListInput input)
public Task<PagedResultDto<BlogDto>> GetListAsync(BlogGetListInput input)
{
return BlogAdminAppService.GetListAsync(input);
}
[HttpPost]
[Authorize(CmsKitAdminPermissions.Blogs.Create)]
public Task<BlogDto> CreateAsync(CreateBlogDto input)
{
return BlogAdminAppService.CreateAsync(input);
}
[HttpPut]
[Route("{id}")]
[Authorize(CmsKitAdminPermissions.Blogs.Update)]
public Task<BlogDto> UpdateAsync(Guid id, BlogDto input)
public Task<BlogDto> UpdateAsync(Guid id, UpdateBlogDto input)
{
return BlogAdminAppService.UpdateAsync(id, input);
}
[HttpDelete]
[Route("{id}")]
[Authorize(CmsKitAdminPermissions.Blogs.Delete)]
public Task DeleteAsync(Guid id)
{
return BlogAdminAppService.DeleteAsync(id);
}
}
}

92
modules/cms-kit/test/Volo.CmsKit.Application.Tests/Blogs/BlogAdminAppService_Tests.cs

@ -0,0 +1,92 @@
using System.Linq;
using System.Threading.Tasks;
using Shouldly;
using Volo.Abp.Domain.Entities;
using Volo.CmsKit.Admin.Blogs;
using Xunit;
namespace Volo.CmsKit.Blogs
{
public class BlogAdminAppService_Tests : CmsKitApplicationTestBase
{
protected IBlogAdminAppService BlogAdminAppService { get; }
protected CmsKitTestData CmsKitTestData { get; }
protected IBlogRepository BlogRepository { get; }
public BlogAdminAppService_Tests()
{
BlogAdminAppService = GetRequiredService<IBlogAdminAppService>();
CmsKitTestData = GetRequiredService<CmsKitTestData>();
BlogRepository = GetRequiredService<IBlogRepository>();
}
[Fact]
public async Task GetAsync()
{
var blog = await BlogAdminAppService.GetAsync(CmsKitTestData.Blog_Id);
blog.Slug.ShouldBe(CmsKitTestData.BlogSlug);
}
[Fact]
public async Task GetListAsync()
{
var blogs = await BlogAdminAppService.GetListAsync(new BlogGetListInput());
blogs.TotalCount.ShouldBeGreaterThan(0);
blogs.Items.Any(x => x.Slug == CmsKitTestData.BlogSlug).ShouldBeTrue();
}
[Fact]
public async Task CreateAsync_ShouldWork()
{
var blog = await BlogAdminAppService.CreateAsync(new CreateBlogDto
{
Name = "News",
Slug = "latest-news"
});
blog.ShouldNotBeNull();
blog.Name.ShouldBe("News");
blog.Slug.ShouldBe("latest-news");
}
[Fact]
public async Task CreateAsync_ShouldThrow_WithExistSlug()
{
await Should.ThrowAsync<BlogSlugAlreadyExistException>(
async () =>
await BlogAdminAppService.CreateAsync(new CreateBlogDto
{
Name = "News",
Slug = CmsKitTestData.BlogSlug
}));
}
[Fact]
public async Task UpdateAsync_ShouldWork()
{
var blog = await BlogAdminAppService.UpdateAsync(CmsKitTestData.Blog_Id, new UpdateBlogDto
{
Name = "New Name",
Slug = "new-slug"
});
var updatedBlog = await BlogAdminAppService.GetAsync(CmsKitTestData.Blog_Id);
updatedBlog.Name.ShouldBe("New Name");
updatedBlog.Slug.ShouldBe("new-slug");
}
[Fact]
public async Task DeleteAsync_ShouldWork()
{
await BlogAdminAppService.DeleteAsync(CmsKitTestData.Blog_Id);
await Should.ThrowAsync<EntityNotFoundException>(
async () =>
await BlogAdminAppService.GetAsync(CmsKitTestData.Blog_Id)
);
}
}
}

50
modules/cms-kit/test/Volo.CmsKit.Domain.Tests/Blogs/BlogManager_Test.cs

@ -0,0 +1,50 @@
using System;
using System.Threading.Tasks;
using Shouldly;
using Xunit;
namespace Volo.CmsKit.Blogs
{
public class BlogManager_Test : CmsKitDomainTestBase
{
protected IBlogRepository BlogRepository { get; }
protected BlogManager BlogManager { get; }
protected CmsKitTestData TestData { get; }
public BlogManager_Test()
{
BlogRepository = GetRequiredService<IBlogRepository>();
BlogManager = GetRequiredService<BlogManager>();
TestData = GetRequiredService<CmsKitTestData>();
}
[Fact]
public async Task BlogCreate_ShouldThrowException_WithExistSlug()
{
await Should.ThrowAsync<BlogSlugAlreadyExistException>(
async () =>
await BlogManager.CreateAsync("test-name", TestData.BlogSlug)
);
}
[Fact]
public async Task BlogCreate_ShouldWorkProperly()
{
var blog = await BlogManager.CreateAsync("test-name", "test-slug");
blog.ShouldNotBeNull();
blog.Id.ShouldNotBe(Guid.Empty);
}
[Fact]
public async Task BlogUpdate_ShouldWork()
{
var blog = await BlogRepository.GetAsync(TestData.Blog_Id);
await BlogManager.UpdateAsync(blog, "New name", "new-slug");
blog.Name.ShouldBe("New name");
blog.Slug.ShouldBe("new-slug");
}
}
}

27
modules/cms-kit/test/Volo.CmsKit.TestBase/Blogs/BlogRepository_Test.cs

@ -61,5 +61,32 @@ namespace Volo.CmsKit.Blogs
result.ShouldBeFalse();
}
[Fact]
public async Task GetList_ShouldWorkProperly()
{
var list = await blogRepository.GetListAsync();
list.ShouldNotBeNull();
list.Count.ShouldBeGreaterThan(0);
}
[Fact]
public async Task GetCount_ShouldWorkProperly()
{
var count = await blogRepository.GetCountAsync();
count.ShouldBeGreaterThan(0);
}
[Fact]
public async Task SlugExistAsync_ShouldWorkProperly()
{
var exists = await blogRepository.SlugExistsAsync(testData.BlogSlug);
var notExists = await blogRepository.SlugExistsAsync("not-existing-blog-slug");
exists.ShouldBeTrue();
notExists.ShouldBeFalse();
}
}
}

Loading…
Cancel
Save