From 1851178aaaab5d90fce29afdda98ceac582f28da Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 6 Feb 2023 17:22:32 +0800 Subject: [PATCH] Fix unit test. --- .../AbpFeatureManagementDomainModule.cs | 8 +++++++- ...ManagementEntityFrameworkCoreTestModule.cs | 19 ++++++++++++++++++- .../AbpPermissionManagementDomainModule.cs | 9 +++++++-- ...missionDefinitionRecordRepository_Tests.cs | 4 +++- ...ManagementEntityFrameworkCoreTestModule.cs | 16 ++++++++++++++++ ...missionDefinitionRecordRepository_Tests.cs | 2 +- 6 files changed, 52 insertions(+), 6 deletions(-) diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs index ba8105cb88..291e947c06 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs @@ -52,6 +52,7 @@ public class AbpFeatureManagementDomainModule : AbpModule } private readonly CancellationTokenSource _cancellationTokenSource = new(); + private Task _initializeDynamicFeaturesTask; public override void OnApplicationInitialization(ApplicationInitializationContext context) { @@ -70,6 +71,11 @@ public class AbpFeatureManagementDomainModule : AbpModule return Task.CompletedTask; } + public Task GetInitializeDynamicFeaturesTask() + { + return _initializeDynamicFeaturesTask ?? Task.CompletedTask; + } + private void InitializeDynamicFeatures(ApplicationInitializationContext context) { var options = context @@ -84,7 +90,7 @@ public class AbpFeatureManagementDomainModule : AbpModule var rootServiceProvider = context.ServiceProvider.GetRequiredService(); - Task.Run(async () => + _initializeDynamicFeaturesTask = Task.Run(async () => { using var scope = rootServiceProvider.CreateScope(); var applicationLifetime = scope.ServiceProvider.GetService(); diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo/Abp/FeatureManagement/EntityFrameworkCore/AbpFeatureManagementEntityFrameworkCoreTestModule.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo/Abp/FeatureManagement/EntityFrameworkCore/AbpFeatureManagementEntityFrameworkCoreTestModule.cs index 147a4009a9..3329f1dba6 100644 --- a/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo/Abp/FeatureManagement/EntityFrameworkCore/AbpFeatureManagementEntityFrameworkCoreTestModule.cs +++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo/Abp/FeatureManagement/EntityFrameworkCore/AbpFeatureManagementEntityFrameworkCoreTestModule.cs @@ -1,10 +1,13 @@ -using Microsoft.Data.Sqlite; +using System.Threading.Tasks; +using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.Extensions.DependencyInjection; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.Sqlite; using Volo.Abp.Modularity; +using Volo.Abp.Threading; using Volo.Abp.Uow; namespace Volo.Abp.FeatureManagement.EntityFrameworkCore; @@ -42,4 +45,18 @@ public class AbpFeatureManagementEntityFrameworkCoreTestModule : AbpModule return connection; } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + var task = context.ServiceProvider.GetRequiredService().GetInitializeDynamicFeaturesTask(); + if (!task.IsCompleted) + { + AsyncHelper.RunSync(() => Awaited(task)); + } + } + + private async static Task Awaited(Task task) + { + await task; + } } diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs index 71b42a20fb..da96890997 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs @@ -26,7 +26,7 @@ namespace Volo.Abp.PermissionManagement; public class AbpPermissionManagementDomainModule : AbpModule { private readonly CancellationTokenSource _cancellationTokenSource = new(); - + private Task _initializeDynamicPermissionsTask; public override void ConfigureServices(ServiceConfigurationContext context) { if (context.Services.IsDataMigrationEnvironment()) @@ -56,6 +56,11 @@ public class AbpPermissionManagementDomainModule : AbpModule return Task.CompletedTask; } + public Task GetInitializeDynamicPermissionsTask() + { + return _initializeDynamicPermissionsTask ?? Task.CompletedTask; + } + private void InitializeDynamicPermissions(ApplicationInitializationContext context) { var options = context @@ -70,7 +75,7 @@ public class AbpPermissionManagementDomainModule : AbpModule var rootServiceProvider = context.ServiceProvider.GetRequiredService(); - Task.Run(async () => + _initializeDynamicPermissionsTask = Task.Run(async () => { using var scope = rootServiceProvider.CreateScope(); var applicationLifetime = scope.ServiceProvider.GetService(); diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDefinitionRecordRepository_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDefinitionRecordRepository_Tests.cs index 20f9f7e21f..d7ca406624 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDefinitionRecordRepository_Tests.cs +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDefinitionRecordRepository_Tests.cs @@ -1,10 +1,12 @@ using System.Threading.Tasks; using Shouldly; +using Volo.Abp.Modularity; using Xunit; namespace Volo.Abp.PermissionManagement; -public abstract class PermissionDefinitionRecordRepository_Tests : PermissionTestBase +public abstract class PermissionDefinitionRecordRepository_Tests : PermissionManagementTestBase + where TStartupModule : IAbpModule { protected IPermissionDefinitionRecordRepository PermissionDefinitionRecordRepository { get; set; } diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementEntityFrameworkCoreTestModule.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementEntityFrameworkCoreTestModule.cs index b7eab38191..a73e5afb86 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementEntityFrameworkCoreTestModule.cs +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementEntityFrameworkCoreTestModule.cs @@ -1,8 +1,10 @@ using System; +using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.Modularity; +using Volo.Abp.Threading; using Volo.Abp.Uow; namespace Volo.Abp.PermissionManagement.EntityFrameworkCore; @@ -28,4 +30,18 @@ public class AbpPermissionManagementEntityFrameworkCoreTestModule : AbpModule context.Services.AddAlwaysDisableUnitOfWorkTransaction(); } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + var task = context.ServiceProvider.GetRequiredService().GetInitializeDynamicPermissionsTask(); + if (!task.IsCompleted) + { + AsyncHelper.RunSync(() => Awaited(task)); + } + } + + private async static Task Awaited(Task task) + { + await task; + } } diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo/Abp/PermissionManagement/EntityFrameworkCore/EFCorePermissionDefinitionRecordRepository_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo/Abp/PermissionManagement/EntityFrameworkCore/EFCorePermissionDefinitionRecordRepository_Tests.cs index 5429d2e772..832c266ba6 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo/Abp/PermissionManagement/EntityFrameworkCore/EFCorePermissionDefinitionRecordRepository_Tests.cs +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo/Abp/PermissionManagement/EntityFrameworkCore/EFCorePermissionDefinitionRecordRepository_Tests.cs @@ -1,6 +1,6 @@ namespace Volo.Abp.PermissionManagement.EntityFrameworkCore; -public class EFCorePermissionDefinitionRecordRepository_Tests : PermissionDefinitionRecordRepository_Tests +public class EFCorePermissionDefinitionRecordRepository_Tests : PermissionDefinitionRecordRepository_Tests { }