Browse Source

支持测试用例,修改了删除检查

bjmzak
DESKTOP-G961P6V\Zhh 2 years ago
parent
commit
757f519904
  1. 6
      src/Shentun.Peis.Application/GuideTypes/GuideTypeAppService.cs
  2. 2
      src/Shentun.Peis.Application/PeisApplicationModule.cs
  3. 17
      src/Shentun.Peis.Domain/GuideTypes/GuideTypeManager.cs
  4. 76
      test/Shentun.Peis.Application.Tests/GuideTypeAppServiceTest.cs
  5. 64
      test/Shentun.Peis.Domain.Tests/GuideTypeManagerTest.cs
  6. 2
      test/Shentun.Peis.TestBase/PeisTestBaseModule.cs

6
src/Shentun.Peis.Application/GuideTypes/GuideTypeAppService.cs

@ -149,9 +149,11 @@ namespace Shentun.Peis.GuideTypes
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public override Task DeleteAsync(Guid id)
public override async Task DeleteAsync(Guid id)
{
return base.DeleteAsync(id);
var entity = await Repository.GetAsync(id);
await _manager.CheckDeleteAsync(entity);
await base.DeleteAsync(id);
}

2
src/Shentun.Peis.Application/PeisApplicationModule.cs

@ -40,7 +40,7 @@ public class PeisApplicationModule : AbpModule
//context.Services.AddTransient<IMyUser, MyUserAppService>();
context.Services.AddTransient<MyUserAppService>();
context.Services.AddTransient<PermissionManagementAppService>();
}

17
src/Shentun.Peis.Domain/GuideTypes/GuideTypeManager.cs

@ -22,9 +22,12 @@ namespace Shentun.Peis.GuidTypes
public class GuideTypeManager : DomainService
{
private readonly IRepository<GuideType, Guid> _repository;
public GuideTypeManager(IRepository<GuideType, Guid> repository)
private readonly IRepository<ItemType, Guid> _itemTypeRepository;
public GuideTypeManager(IRepository<GuideType, Guid> repository,
IRepository<ItemType, Guid> itemTypeRepository)
{
_repository = repository;
_itemTypeRepository = itemTypeRepository;
}
/// <summary>
@ -110,6 +113,16 @@ namespace Shentun.Peis.GuidTypes
}
public async Task CheckDeleteAsync(GuideType entity )
{
var queryable = await _itemTypeRepository.GetQueryableAsync();
var item = queryable.Where(o => o.GuidTypeId.Equals(entity.Id)).FirstOrDefault();
if (item != null)
{
throw new BusinessException("",$"指引类别\"{entity.DisplayName}\"已有项目类别\"{item.DisplayName}\"在使用,不能删除");
}
}
}
}

76
test/Shentun.Peis.Application.Tests/GuideTypeAppServiceTest.cs

@ -1,4 +1,6 @@
using Shentun.Peis.GuideTypes;
using Microsoft.EntityFrameworkCore;
using Shentun.Peis.GuideTypes;
using Shentun.Peis.Models;
using Shouldly;
using System;
using System.Collections.Generic;
@ -6,6 +8,8 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Uow;
using Xunit;
using Xunit.Abstractions;
@ -13,14 +17,56 @@ namespace Shentun.Peis
{
public class GuideTypeAppServiceTest: PeisApplicationTestBase
{
private readonly IRepository<GuideType, Guid> _repository;
private readonly GuideTypeAppService _guideTypeAppService;
private readonly ITestOutputHelper _testOutputHelper;
private readonly ITestOutputHelper _output;
private readonly IUnitOfWorkManager _unitOfWorkManager;
public GuideTypeAppServiceTest(ITestOutputHelper testOutputHelper)
{
_testOutputHelper = testOutputHelper;
_output = testOutputHelper;
_unitOfWorkManager = GetRequiredService<IUnitOfWorkManager>();
_repository = GetRequiredService<IRepository<GuideType, Guid>>();
_guideTypeAppService = GetRequiredService<GuideTypeAppService>();
}
[Fact]
public async Task GetQueryListAsync()
{
using (var uow = _unitOfWorkManager.Begin())
{
IQueryable<GuideType> queryable = await _repository.GetQueryableAsync();
var itemTypes = (from item in queryable
select item).ToList();
foreach (var item in itemTypes)
{
_output.WriteLine(item.DisplayName);
}
await uow.CompleteAsync();
}
}
[Fact]
public async Task GetListAsync()
{
PagedAndSortedResultRequestDto qc = new PagedAndSortedResultRequestDto()
{
Sorting = "displayorder"
};
var result = await _guideTypeAppService.GetListAsync(qc);
_output.WriteLine(result.TotalCount.ToString());
foreach (var item in result.Items)
{
Console.WriteLine(item.DisplayName);
_output.WriteLine(item.DisplayName);
}
}
[Fact]
public async Task GetList()
{
@ -29,11 +75,11 @@ namespace Shentun.Peis
var result = await _guideTypeAppService.GetListAsync(qc);
result.TotalCount.ShouldBeGreaterThanOrEqualTo(4);
Console.WriteLine(result.TotalCount);
_testOutputHelper.WriteLine(result.TotalCount.ToString());
_output.WriteLine(result.TotalCount.ToString());
foreach (var item in result.Items)
{
Console.WriteLine(item.DisplayName);
_testOutputHelper.WriteLine(item.DisplayName);
_output.WriteLine(item.DisplayName);
}
}
@ -46,10 +92,28 @@ namespace Shentun.Peis
{
DisplayName = "Foo",
});
_testOutputHelper.WriteLine(result.Id.ToString());
_output.WriteLine(result.Id.ToString());
}
[Fact]
public async Task DeleteAsync()
{
try
{
using (var uow = _unitOfWorkManager.Begin())
{
await _guideTypeAppService.DeleteAsync(new Guid("3a0d6dfb-300b-fe76-15b6-f0398bee2f50"));
_output.WriteLine("删除成功");
}
}
catch (Exception ex)
{
_output.WriteLine(ex.Message);
}
}
}
}

64
test/Shentun.Peis.Domain.Tests/GuideTypeManagerTest.cs

@ -6,12 +6,16 @@ using Shentun.Peis.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.Uow;
using Volo.Abp.Linq;
using Xunit;
using Xunit.Abstractions;
using TencentCloud.Tci.V20190318.Models;
namespace Shentun.Peis
{
@ -19,15 +23,21 @@ namespace Shentun.Peis
{
private readonly IRepository<GuideType, Guid> _repository;
private readonly GuideTypeManager _manager;
private readonly IDbContextProvider<PeisDbContext> _dbContextProvider;
//private readonly IDbContextProvider<PeisDbContext> _dbContextProvider;
private readonly ITestOutputHelper _output;
private readonly IRepository<ItemType, Guid> _itemTypeRepository;
private readonly IUnitOfWorkManager _unitOfWorkManager;
public GuideTypeManagerTest()
public GuideTypeManagerTest( ITestOutputHelper output)
{
_repository = Substitute.For<IRepository<GuideType,Guid>>();
//_repository = GetRequiredService<IRepository<GuideType, Guid>>();
_manager = GetRequiredService<GuideTypeManager>();
_output = output;
//_dbContextProvider = GetRequiredService<IDbContextProvider<PeisDbContext>>();
//_unitOfWorkManager = GetRequiredService<IUnitOfWorkManager>();
//_dbContextProvider = dbContextProvider;
//_repository = Substitute.For<IRepository<GuideType,Guid>>();
_repository = GetRequiredService<IRepository<GuideType, Guid>>();
_itemTypeRepository = GetRequiredService<IRepository<ItemType, Guid>>();
_manager = GetRequiredService<GuideTypeManager>();
_unitOfWorkManager = GetRequiredService<IUnitOfWorkManager>();
}
[Fact]
public async Task Should_Set_CanAdd()
@ -52,15 +62,47 @@ namespace Shentun.Peis
Console.WriteLine(item.Id.ToString());
}
[Fact]
public async Task TestDataBase()
public async Task GetListAsync()
{
var db = await _dbContextProvider.GetDbContextAsync();
var items = db.Users.ToList();
var items = await _repository.GetListAsync();
items.ForEach(o =>
{
Console.WriteLine(o.Id.ToString());
_output.WriteLine(o.DisplayName.ToString());
});
}
[Fact]
[UnitOfWork]
public virtual async Task CheckDeleteAsync()
{
try
{
using (var uow = _unitOfWorkManager.Begin())
{
var entity = await _repository.GetAsync(new Guid("3a0d6c49-cecf-19d9-0f4b-0923a28a3889"));
await _manager.CheckDeleteAsync(entity);
}
}
catch (Exception ex)
{
_output.WriteLine(ex.Message);
}
}
[Fact]
public async Task TestDataBase()
{
//var db = await _dbContextProvider.GetDbContextAsync();
//var items = db.Users.ToList();
//items.ForEach(o =>
//{
// Console.WriteLine(o.Id.ToString());
//});
}
}
}

2
test/Shentun.Peis.TestBase/PeisTestBaseModule.cs

@ -34,7 +34,7 @@ public class PeisTestBaseModule : AbpModule
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
SeedTestData(context);
//SeedTestData(context);
}
private static void SeedTestData(ApplicationInitializationContext context)

Loading…
Cancel
Save