You've already forked Extensions.Configuration.EntityFrameworkCore
Add happy-path tests
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using RAIC.Extensions.Configuration.EntityFrameworkCore.Extensions;
|
||||
using RAIC.Extensions.Configuration.EntityFrameworkCore.SqlServer.Extensions;
|
||||
using TUnit.Core.Interfaces;
|
||||
|
||||
namespace RAIC.Extensions.Configuration.EntityFrameworkCore.SqlServer.Tests;
|
||||
|
||||
|
||||
[Table("Settings", Schema = "dbo")]
|
||||
public record Setting : ISetting
|
||||
{
|
||||
[Key]
|
||||
public required string Key { get; set; }
|
||||
|
||||
[Required]
|
||||
public required string Value { get; set; }
|
||||
}
|
||||
|
||||
public class FixtureDbContext(DbContextOptions<FixtureDbContext> options) : DbContext(options), ISettingsDbContext<DbSet<Setting>>, ISettingsDbContextFactory<FixtureDbContext>
|
||||
{
|
||||
public DbSet<Setting> Settings { get; set; }
|
||||
|
||||
public static FixtureDbContext Create(DbContextOptions<FixtureDbContext> options) => new(options);
|
||||
}
|
||||
|
||||
public class FixtureOptions
|
||||
{
|
||||
public required string SomeOption { get; set; }
|
||||
}
|
||||
|
||||
|
||||
public class HostFixture: IAsyncInitializer, IServiceScopeFactory
|
||||
{
|
||||
|
||||
private IHost? _host;
|
||||
|
||||
public IServiceScope CreateScope() => _host!.Services.CreateScope();
|
||||
|
||||
public async Task InitializeAsync()
|
||||
{
|
||||
var builder = Host.CreateApplicationBuilder();
|
||||
|
||||
// build a initial configuration
|
||||
builder.Configuration
|
||||
.AddInMemoryCollection(new Dictionary<string, string?>()
|
||||
{
|
||||
{ nameof(FixtureOptions.SomeOption), "Memory value" },
|
||||
})
|
||||
.AddUserSecrets<SingleSettingTests>() // for connection string
|
||||
.AddEnvironmentVariables(prefix: "ASPNETCORE_");
|
||||
|
||||
// add DbContext based configuration using connection string sourced from initial config
|
||||
builder.Configuration.AddDbContext<FixtureDbContext>(dbContextOptions => dbContextOptions.UseSqlServer(builder.Configuration.GetConnectionString("Default")));
|
||||
|
||||
builder.Services
|
||||
.AddDbContext<FixtureDbContext>(opt => opt.UseSqlServer(builder.Configuration.GetConnectionString("Default")))
|
||||
.AddSqlServerNotificationConfigurationReloadService<FixtureDbContext, Setting>()
|
||||
.AddOptions<FixtureOptions>().Bind(builder.Configuration);
|
||||
|
||||
builder.Logging.AddDebug();
|
||||
|
||||
_host = builder.Build();
|
||||
|
||||
await _host.StartAsync();
|
||||
|
||||
_ = _host.WaitForShutdownAsync();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user