using System; using Luticate2.Utils.DataAccess; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using WebApiWebSem.DataAccess; namespace Test { public class Tests { public const string RealDbConnectionString = "User ID=dev;Password=dev;Host=localhost;Port=5432;Database=websem_project;Pooling=true;"; public static IServiceProvider BuildRealDbServiceProvider() { IServiceCollection serviceCollection = new ServiceCollection(); serviceCollection.AddScoped(); serviceCollection.AddTransient(); serviceCollection.AddDbContext(builder => builder.UseNpgsql(RealDbConnectionString), ServiceLifetime.Transient); return serviceCollection.BuildServiceProvider(); } protected static void _TestRealDb(Action func) { var serviceProvider = BuildRealDbServiceProvider(); var transactionScope = serviceProvider.GetService(); transactionScope.BeginTransaction(null); try { func(serviceProvider); } finally { transactionScope.RollbackTransaction(); } } public static void TestRealDb(Action func) { _TestRealDb(provider => { func(provider.GetService()); }); } } }