using Microsoft.Extensions.DependencyInjection;
|
using Volo.Abp;
|
using Volo.Abp.Modularity;
|
using Volo.Abp.Testing;
|
using Volo.Abp.Uow;
|
|
namespace CMS.Plugin.HIAWms.TestBase
|
{
|
/// <summary>
|
/// MyProjectName TestBase
|
/// </summary>
|
/// <typeparam name="TStartupModule">IAbpModule</typeparam>
|
public class HIAWmsTestBase<TStartupModule> : AbpIntegratedTest<TStartupModule>
|
where TStartupModule : IAbpModule
|
{
|
/// <summary>
|
/// SetAbpApplicationCreationOptions
|
/// </summary>
|
/// <param name="options">AbpApplicationCreationOptions</param>
|
protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options)
|
{
|
options.UseAutofac();
|
}
|
|
/// <summary>
|
/// WithUnitOfWorkAsync
|
/// </summary>
|
/// <param name="func">func</param>
|
/// <returns>Task</returns>
|
protected virtual Task WithUnitOfWorkAsync(Func<Task> func)
|
{
|
return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func);
|
}
|
|
/// <summary>
|
/// WithUnitOfWorkAsync
|
/// </summary>
|
/// <param name="options">AbpUnitOfWorkOptions</param>
|
/// <param name="action">action</param>
|
/// <returns>Task</returns>
|
protected virtual async Task WithUnitOfWorkAsync(AbpUnitOfWorkOptions options, Func<Task> action)
|
{
|
using (var scope = ServiceProvider.CreateScope())
|
{
|
var uowManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
|
|
using (var uow = uowManager.Begin(options))
|
{
|
await action();
|
|
await uow.CompleteAsync();
|
}
|
}
|
}
|
|
/// <summary>
|
/// WithUnitOfWorkAsync
|
/// </summary>
|
/// <typeparam name="TResult">t</typeparam>
|
/// <param name="func">TResult</param>
|
/// <returns>TResult</returns>
|
protected virtual Task<TResult> WithUnitOfWorkAsync<TResult>(Func<Task<TResult>> func)
|
{
|
return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func);
|
}
|
|
/// <summary>
|
/// WithUnitOfWorkAsync
|
/// </summary>
|
/// <typeparam name="TResult">T</typeparam>
|
/// <param name="options">AbpUnitOfWorkOptions</param>
|
/// <param name="func">Func</param>
|
/// <returns>TResult</returns>
|
protected virtual async Task<TResult> WithUnitOfWorkAsync<TResult>(AbpUnitOfWorkOptions options, Func<Task<TResult>> func)
|
{
|
using (var scope = ServiceProvider.CreateScope())
|
{
|
var uowManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
|
|
using (var uow = uowManager.Begin(options))
|
{
|
var result = await func();
|
await uow.CompleteAsync();
|
return result;
|
}
|
}
|
}
|
}
|
}
|