feat(Fake): enhance Fake host with production DbContext support

- Added `EGDbContext2Prod` class to allow connecting to production database in tests
 - Updated `CreateHost` to register `EGDbContext2Prod` with SQL Server connection string
 - Added `EnvelopeGenerator.Application.Common.Configurations` and logging support
 - Refactored service registration ordering for clarity
This commit is contained in:
tekh 2025-09-15 13:18:30 +02:00
parent ccc4e948f3
commit 9eaa777fb6

View File

@ -2,6 +2,7 @@
using DigitalData.Core.Abstraction.Application.Repository;
using DigitalData.UserManager.Domain.Entities;
using EnvelopeGenerator.Application;
using EnvelopeGenerator.Application.Common.Configurations;
using EnvelopeGenerator.Application.EnvelopeReceivers.Commands;
using EnvelopeGenerator.Application.Envelopes.Commands;
using EnvelopeGenerator.Application.Histories.Commands;
@ -15,6 +16,8 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using QuestPDF.Fluent;
using QuestPDF.Infrastructure;
@ -33,9 +36,6 @@ public class Fake
})
.ConfigureServices((context, services) =>
{
// add custom services
configureServices?.Invoke(services);
IConfiguration configuration = context.Configuration;
// add Application and Infrastructure services
@ -45,6 +45,12 @@ public class Fake
(sp, options) => options.UseInMemoryDatabase("EnvelopeGeneratorTestDb"),
context.Configuration
);
var prodCnnStr = context.Configuration.GetConnectionString("Default");
services.AddDbContext<EGDbContext2Prod>(opt => opt.UseSqlServer(prodCnnStr));
// add custom services
configureServices?.Invoke(services);
#pragma warning restore CS0618
})
.Build()
@ -128,6 +134,17 @@ public class Fake
}
#endregion
}
/// <summary>
/// Represents a mock database context that inherits from <see cref="EGDbContext"/>.
/// This context is intended for testing purposes while connecting to the production database.
/// </summary>
public class EGDbContext2Prod : EGDbContext
{
public EGDbContext2Prod(DbContextOptions<EGDbContext> options, IOptions<DbTriggerParams> triggerParamOptions, ILogger<EGDbContext>? logger = null) : base(options, triggerParamOptions, logger)
{
}
}
}
public static class Extensions