Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

Tests.cs 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System;
  2. using Luticate2.Utils.DataAccess;
  3. using Microsoft.EntityFrameworkCore;
  4. using Microsoft.Extensions.DependencyInjection;
  5. using TestUtils.DataAccess;
  6. namespace TestUtils
  7. {
  8. public class Tests
  9. {
  10. public const string ConnectionString =
  11. "User ID=dev;Password=dev;Host=localhost;Port=5432;Database=luticate2_utils;Pooling=true;";
  12. public static IServiceProvider BuildServiceProvider()
  13. {
  14. IServiceCollection serviceCollection = new ServiceCollection();
  15. serviceCollection.AddScoped<LuEfTransactionScope>();
  16. serviceCollection.AddTransient<LuUtilsPkBigSerialDataAccess>();
  17. serviceCollection.AddTransient<LuUtilsPkGuidDataAccess>();
  18. serviceCollection.AddTransient<LuUtilsFkPkGuidDataAccess>();
  19. serviceCollection.AddDbContext<LuUtilsDbContext>(builder => builder.UseNpgsql(ConnectionString),
  20. ServiceLifetime.Transient);
  21. return serviceCollection.BuildServiceProvider();
  22. }
  23. protected static void _TestRealDb(Action<IServiceProvider> func)
  24. {
  25. var serviceProvider = BuildServiceProvider();
  26. var transactionScope = serviceProvider.GetService<LuEfTransactionScope>();
  27. transactionScope.BeginTransaction<LuUtilsDbContext>(null);
  28. try
  29. {
  30. func(serviceProvider);
  31. }
  32. finally
  33. {
  34. transactionScope.RollbackTransaction<LuUtilsDbContext>();
  35. }
  36. }
  37. public static void TestRealDb<TDataAccess>(Action<TDataAccess> func)
  38. {
  39. _TestRealDb(provider =>
  40. {
  41. func(provider.GetService<TDataAccess>());
  42. });
  43. }
  44. public static void TestRealDb<TDataAccess, TDataAccess2>(Action<TDataAccess, TDataAccess2> func)
  45. {
  46. _TestRealDb(provider =>
  47. {
  48. func(provider.GetService<TDataAccess>(), provider.GetService<TDataAccess2>());
  49. });
  50. }
  51. }
  52. }