From 757f5199040bf9534f3b81732613e824eeee1b27 Mon Sep 17 00:00:00 2001 From: "DESKTOP-G961P6V\\Zhh" <839860190@qq.com> Date: Mon, 4 Sep 2023 10:03:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=B5=8B=E8=AF=95=E7=94=A8?= =?UTF-8?q?=E4=BE=8B=EF=BC=8C=E4=BF=AE=E6=94=B9=E4=BA=86=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GuideTypes/GuideTypeAppService.cs | 6 +- .../PeisApplicationModule.cs | 2 +- .../GuideTypes/GuideTypeManager.cs | 17 ++++- .../GuideTypeAppServiceTest.cs | 76 +++++++++++++++++-- .../GuideTypeManagerTest.cs | 64 +++++++++++++--- .../PeisTestBaseModule.cs | 2 +- 6 files changed, 144 insertions(+), 23 deletions(-) diff --git a/src/Shentun.Peis.Application/GuideTypes/GuideTypeAppService.cs b/src/Shentun.Peis.Application/GuideTypes/GuideTypeAppService.cs index 89af012..cfc43a4 100644 --- a/src/Shentun.Peis.Application/GuideTypes/GuideTypeAppService.cs +++ b/src/Shentun.Peis.Application/GuideTypes/GuideTypeAppService.cs @@ -149,9 +149,11 @@ namespace Shentun.Peis.GuideTypes /// /// /// - 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); } diff --git a/src/Shentun.Peis.Application/PeisApplicationModule.cs b/src/Shentun.Peis.Application/PeisApplicationModule.cs index 8fe31cb..71d2508 100644 --- a/src/Shentun.Peis.Application/PeisApplicationModule.cs +++ b/src/Shentun.Peis.Application/PeisApplicationModule.cs @@ -40,7 +40,7 @@ public class PeisApplicationModule : AbpModule //context.Services.AddTransient(); context.Services.AddTransient(); context.Services.AddTransient(); - + } diff --git a/src/Shentun.Peis.Domain/GuideTypes/GuideTypeManager.cs b/src/Shentun.Peis.Domain/GuideTypes/GuideTypeManager.cs index 5dc6103..bce9c33 100644 --- a/src/Shentun.Peis.Domain/GuideTypes/GuideTypeManager.cs +++ b/src/Shentun.Peis.Domain/GuideTypes/GuideTypeManager.cs @@ -22,9 +22,12 @@ namespace Shentun.Peis.GuidTypes public class GuideTypeManager : DomainService { private readonly IRepository _repository; - public GuideTypeManager(IRepository repository) + private readonly IRepository _itemTypeRepository; + public GuideTypeManager(IRepository repository, + IRepository itemTypeRepository) { _repository = repository; + _itemTypeRepository = itemTypeRepository; } /// @@ -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}\"在使用,不能删除"); + } + + } } } diff --git a/test/Shentun.Peis.Application.Tests/GuideTypeAppServiceTest.cs b/test/Shentun.Peis.Application.Tests/GuideTypeAppServiceTest.cs index 7b2d60c..5507544 100644 --- a/test/Shentun.Peis.Application.Tests/GuideTypeAppServiceTest.cs +++ b/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 _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(); + _repository = GetRequiredService>(); _guideTypeAppService = GetRequiredService(); } + [Fact] + public async Task GetQueryListAsync() + { + using (var uow = _unitOfWorkManager.Begin()) + { + IQueryable 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); + } + + } + } } diff --git a/test/Shentun.Peis.Domain.Tests/GuideTypeManagerTest.cs b/test/Shentun.Peis.Domain.Tests/GuideTypeManagerTest.cs index a5271ec..8abd873 100644 --- a/test/Shentun.Peis.Domain.Tests/GuideTypeManagerTest.cs +++ b/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 _repository; private readonly GuideTypeManager _manager; - private readonly IDbContextProvider _dbContextProvider; + //private readonly IDbContextProvider _dbContextProvider; + private readonly ITestOutputHelper _output; + private readonly IRepository _itemTypeRepository; private readonly IUnitOfWorkManager _unitOfWorkManager; - public GuideTypeManagerTest() + public GuideTypeManagerTest( ITestOutputHelper output) { - _repository = Substitute.For>(); - //_repository = GetRequiredService>(); - _manager = GetRequiredService(); + _output = output; //_dbContextProvider = GetRequiredService>(); - //_unitOfWorkManager = GetRequiredService(); + //_dbContextProvider = dbContextProvider; + //_repository = Substitute.For>(); + _repository = GetRequiredService>(); + _itemTypeRepository = GetRequiredService>(); + _manager = GetRequiredService(); + + _unitOfWorkManager = GetRequiredService(); } [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()); + //}); + } + } } diff --git a/test/Shentun.Peis.TestBase/PeisTestBaseModule.cs b/test/Shentun.Peis.TestBase/PeisTestBaseModule.cs index 09e7c2e..99a67b2 100644 --- a/test/Shentun.Peis.TestBase/PeisTestBaseModule.cs +++ b/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)