mirror of
https://github.com/meysamhadeli/booking-microservices.git
synced 2026-05-05 04:28:49 +08:00
fix: fix db-update exception in tests
This commit is contained in:
parent
bd345ae949
commit
cc8989a6b3
@ -137,6 +137,6 @@ public static class Extensions
|
|||||||
|
|
||||||
var seedersManager = scope.ServiceProvider.GetRequiredService<ISeedManager>();
|
var seedersManager = scope.ServiceProvider.GetRequiredService<ISeedManager>();
|
||||||
|
|
||||||
await seedersManager.ExecuteAsync();
|
await seedersManager.ExecuteSeedAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,5 +2,6 @@ namespace BuildingBlocks.EFCore;
|
|||||||
|
|
||||||
public interface ISeedManager
|
public interface ISeedManager
|
||||||
{
|
{
|
||||||
Task ExecuteAsync();
|
Task ExecuteSeedAsync();
|
||||||
|
Task ExecuteTestSeedAsync();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,39 +1,38 @@
|
|||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Hosting;
|
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace BuildingBlocks.EFCore;
|
namespace BuildingBlocks.EFCore;
|
||||||
|
|
||||||
public class SeedManager(
|
public class SeedManager(
|
||||||
IServiceProvider serviceProvider
|
ILogger<SeedManager> logger,
|
||||||
)
|
IWebHostEnvironment env,
|
||||||
: ISeedManager
|
IServiceProvider serviceProvider
|
||||||
|
) : ISeedManager
|
||||||
{
|
{
|
||||||
public async Task ExecuteAsync()
|
public async Task ExecuteSeedAsync()
|
||||||
{
|
{
|
||||||
await using var scope = serviceProvider.CreateAsyncScope();
|
await using var scope = serviceProvider.CreateAsyncScope();
|
||||||
var logger = scope.ServiceProvider.GetRequiredService<ILogger<SeedManager>>();
|
|
||||||
var env = scope.ServiceProvider.GetRequiredService<IWebHostEnvironment>();
|
|
||||||
var dataSeeders = scope.ServiceProvider.GetServices<IDataSeeder>();
|
var dataSeeders = scope.ServiceProvider.GetServices<IDataSeeder>();
|
||||||
|
|
||||||
if (env.IsEnvironment("test"))
|
foreach (var seeder in dataSeeders.Where(x => x is not ITestDataSeeder))
|
||||||
{
|
{
|
||||||
foreach (var seeder in dataSeeders.Where(x => x is ITestDataSeeder))
|
logger.LogInformation("Seed {SeederName} is started.", seeder.GetType().Name);
|
||||||
{
|
await seeder.SeedAllAsync();
|
||||||
logger.LogInformation("Test Seed {SeederName} is started.", seeder.GetType().Name);
|
logger.LogInformation("Seed {SeederName} is completed.", seeder.GetType().Name);
|
||||||
await seeder.SeedAllAsync();
|
|
||||||
logger.LogInformation("Test Seed {SeederName} is completed.", seeder.GetType().Name);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
|
|
||||||
|
public async Task ExecuteTestSeedAsync()
|
||||||
|
{
|
||||||
|
await using var scope = serviceProvider.CreateAsyncScope();
|
||||||
|
var dataSeeders = scope.ServiceProvider.GetServices<IDataSeeder>();
|
||||||
|
|
||||||
|
foreach (var seeder in dataSeeders.Where(x => x is not ITestDataSeeder))
|
||||||
{
|
{
|
||||||
foreach (var seeder in dataSeeders.Where(x => x is not ITestDataSeeder))
|
logger.LogInformation("Seed {SeederName} is started.", seeder.GetType().Name);
|
||||||
{
|
await seeder.SeedAllAsync();
|
||||||
logger.LogInformation("Seed {SeederName} is started.", seeder.GetType().Name);
|
logger.LogInformation("Seed {SeederName} is completed.", seeder.GetType().Name);
|
||||||
await seeder.SeedAllAsync();
|
|
||||||
logger.LogInformation("Seed {SeederName} is completed.", seeder.GetType().Name);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,10 +51,7 @@ public static class Extensions
|
|||||||
|
|
||||||
services.AddScoped<IPersistMessageProcessor, PersistMessageProcessor>();
|
services.AddScoped<IPersistMessageProcessor, PersistMessageProcessor>();
|
||||||
|
|
||||||
if (env.EnvironmentName != "test")
|
services.AddHostedService<PersistMessageBackgroundService>();
|
||||||
{
|
|
||||||
services.AddHostedService<PersistMessageBackgroundService>();
|
|
||||||
}
|
|
||||||
|
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,6 +52,7 @@ where TEntryPoint : class
|
|||||||
public CancellationTokenSource CancellationTokenSource;
|
public CancellationTokenSource CancellationTokenSource;
|
||||||
|
|
||||||
public PersistMessageBackgroundService PersistMessageBackgroundService => ServiceProvider.GetRequiredService<PersistMessageBackgroundService>();
|
public PersistMessageBackgroundService PersistMessageBackgroundService => ServiceProvider.GetRequiredService<PersistMessageBackgroundService>();
|
||||||
|
public ISeedManager SeedManager => ServiceProvider.GetRequiredService<ISeedManager>();
|
||||||
|
|
||||||
public HttpClient HttpClient
|
public HttpClient HttpClient
|
||||||
{
|
{
|
||||||
@ -95,7 +96,7 @@ where TEntryPoint : class
|
|||||||
{
|
{
|
||||||
TestRegistrationServices?.Invoke(services);
|
TestRegistrationServices?.Invoke(services);
|
||||||
services.ReplaceSingleton(AddHttpContextAccessorMock);
|
services.ReplaceSingleton(AddHttpContextAccessorMock);
|
||||||
// services.RemoveAll<IHostedService>();
|
services.RemoveAll<IHostedService>();
|
||||||
services.AddSingleton<PersistMessageBackgroundService>();
|
services.AddSingleton<PersistMessageBackgroundService>();
|
||||||
|
|
||||||
// Register all ITestDataSeeder implementations dynamically
|
// Register all ITestDataSeeder implementations dynamically
|
||||||
@ -609,6 +610,8 @@ where TEntryPoint : class
|
|||||||
_reSpawnerDefaultDb = await Respawner.CreateAsync(
|
_reSpawnerDefaultDb = await Respawner.CreateAsync(
|
||||||
DefaultDbConnection,
|
DefaultDbConnection,
|
||||||
new RespawnerOptions { DbAdapter = DbAdapter.Postgres });
|
new RespawnerOptions { DbAdapter = DbAdapter.Postgres });
|
||||||
|
|
||||||
|
await Fixture.SeedManager.ExecuteTestSeedAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user