You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.0 KiB
62 lines
2.0 KiB
1 year ago
|
using System;
|
||
|
using System.Threading.Tasks;
|
||
|
using Microsoft.Extensions.DependencyInjection;
|
||
|
using Volo.Abp;
|
||
|
using Volo.Abp.Modularity;
|
||
|
using Volo.Abp.Uow;
|
||
|
using Volo.Abp.Testing;
|
||
|
|
||
|
namespace API
|
||
|
{
|
||
|
/* All test classes are derived from this class, directly or indirectly.
|
||
|
*/
|
||
|
public abstract class APITestBase<TStartupModule> : AbpIntegratedTest<TStartupModule>
|
||
|
where TStartupModule : IAbpModule
|
||
|
{
|
||
|
protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options)
|
||
|
{
|
||
|
options.UseAutofac();
|
||
|
}
|
||
|
|
||
|
protected virtual Task WithUnitOfWorkAsync(Func<Task> func)
|
||
|
{
|
||
|
return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func);
|
||
|
}
|
||
|
|
||
|
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();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
protected virtual Task<TResult> WithUnitOfWorkAsync<TResult>(Func<Task<TResult>> func)
|
||
|
{
|
||
|
return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func);
|
||
|
}
|
||
|
|
||
|
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;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|