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.
61 lines
2.0 KiB
61 lines
2.0 KiB
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 Win_in.Sfs.Scp.WebApi
|
|
{
|
|
/* All test classes are derived from this class, directly or indirectly.
|
|
*/
|
|
public abstract class WebApiTestBase<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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|