41 lines
1.4 KiB
C#
41 lines
1.4 KiB
C#
using Microsoft.Extensions.Hosting;
|
|
using EnvelopeGenerator.Infrastructure;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using EnvelopeGenerator.Application.Services;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using EnvelopeGenerator.Application;
|
|
|
|
namespace EnvelopeGenerator.Tests.Application;
|
|
|
|
public class Mock
|
|
{
|
|
public static IHost CreateHost(Action<HostApplicationBuilder>? builderOptions = null, string configPath = "appsettings.json", bool useRealDb = false, params string[] args)
|
|
{
|
|
var builder = Host.CreateApplicationBuilder(args.Any() ? args : null);
|
|
var config = builder.Configuration;
|
|
builder.Configuration.AddJsonFile(configPath, optional: true, reloadOnChange: true);
|
|
|
|
builder.Services
|
|
.AddEnvelopeGeneratorRepositories(opt =>
|
|
{
|
|
if (useRealDb)
|
|
{
|
|
var connStr = config.GetConnectionString("Default")
|
|
?? throw new InvalidOperationException("There is no default connection string in appsettings.json.");
|
|
opt.UseSqlServer(connStr);
|
|
}
|
|
else
|
|
opt.UseInMemoryDatabase("MockDB");
|
|
})
|
|
.AddEnvelopeGeneratorServices(builder.Configuration)
|
|
.AddScoped<DocumentStatusService>();
|
|
|
|
builderOptions?.Invoke(builder);
|
|
|
|
var host = builder.Build();
|
|
|
|
return host;
|
|
}
|
|
}
|