mirror of
https://github.com/meysamhadeli/booking-microservices.git
synced 2026-04-14 12:48:34 +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>();
|
||||
|
||||
await seedersManager.ExecuteAsync();
|
||||
await seedersManager.ExecuteSeedAsync();
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,5 +2,6 @@ namespace BuildingBlocks.EFCore;
|
||||
|
||||
public interface ISeedManager
|
||||
{
|
||||
Task ExecuteAsync();
|
||||
Task ExecuteSeedAsync();
|
||||
Task ExecuteTestSeedAsync();
|
||||
}
|
||||
|
||||
@ -1,39 +1,38 @@
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace BuildingBlocks.EFCore;
|
||||
|
||||
public class SeedManager(
|
||||
IServiceProvider serviceProvider
|
||||
)
|
||||
: ISeedManager
|
||||
ILogger<SeedManager> logger,
|
||||
IWebHostEnvironment env,
|
||||
IServiceProvider serviceProvider
|
||||
) : ISeedManager
|
||||
{
|
||||
public async Task ExecuteAsync()
|
||||
public async Task ExecuteSeedAsync()
|
||||
{
|
||||
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>();
|
||||
|
||||
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("Test Seed {SeederName} is started.", seeder.GetType().Name);
|
||||
await seeder.SeedAllAsync();
|
||||
logger.LogInformation("Test Seed {SeederName} is completed.", seeder.GetType().Name);
|
||||
}
|
||||
logger.LogInformation("Seed {SeederName} is started.", seeder.GetType().Name);
|
||||
await seeder.SeedAllAsync();
|
||||
logger.LogInformation("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 completed.", seeder.GetType().Name);
|
||||
}
|
||||
logger.LogInformation("Seed {SeederName} is started.", 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>();
|
||||
|
||||
if (env.EnvironmentName != "test")
|
||||
{
|
||||
services.AddHostedService<PersistMessageBackgroundService>();
|
||||
}
|
||||
services.AddHostedService<PersistMessageBackgroundService>();
|
||||
|
||||
return services;
|
||||
}
|
||||
|
||||
@ -52,6 +52,7 @@ where TEntryPoint : class
|
||||
public CancellationTokenSource CancellationTokenSource;
|
||||
|
||||
public PersistMessageBackgroundService PersistMessageBackgroundService => ServiceProvider.GetRequiredService<PersistMessageBackgroundService>();
|
||||
public ISeedManager SeedManager => ServiceProvider.GetRequiredService<ISeedManager>();
|
||||
|
||||
public HttpClient HttpClient
|
||||
{
|
||||
@ -95,7 +96,7 @@ where TEntryPoint : class
|
||||
{
|
||||
TestRegistrationServices?.Invoke(services);
|
||||
services.ReplaceSingleton(AddHttpContextAccessorMock);
|
||||
// services.RemoveAll<IHostedService>();
|
||||
services.RemoveAll<IHostedService>();
|
||||
services.AddSingleton<PersistMessageBackgroundService>();
|
||||
|
||||
// Register all ITestDataSeeder implementations dynamically
|
||||
@ -609,6 +610,8 @@ where TEntryPoint : class
|
||||
_reSpawnerDefaultDb = await Respawner.CreateAsync(
|
||||
DefaultDbConnection,
|
||||
new RespawnerOptions { DbAdapter = DbAdapter.Postgres });
|
||||
|
||||
await Fixture.SeedManager.ExecuteTestSeedAsync();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user