elsa-core/test/shared/Elsa.Testing.Shared/AutoFixture/SpecimenBuilders/HostBubilderUsingServicesSpecimenBuilder.cs
Craig Fowler cbc7c2d461 WIP #552 - Refactor test logic (reusability)
This refactor of integration test logic is to boost its
reusability.  Moving some functionality to attributes &
customization classes means I can reuse elsewhere without
duplication.
2021-03-06 13:55:19 +00:00

23 lines
834 B
C#

using System;
using AutoFixture.Kernel;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace Elsa.Testing.Shared.AutoFixture.SpecimenBuilders
{
public class HostBubilderUsingServicesSpecimenBuilder : ISpecimenBuilder
{
readonly Action<IServiceCollection> serviceConfig;
public object Create(object request, ISpecimenContext context)
=> request.IsAnAutofixtureRequestForType<IHostBuilder>()? GetHostBuilder() : new NoSpecimen();
IHostBuilder GetHostBuilder()
=> Host.CreateDefaultBuilder().ConfigureServices((hostBuilder, services) => serviceConfig(services));
public HostBubilderUsingServicesSpecimenBuilder(Action<IServiceCollection> serviceConfig)
{
this.serviceConfig = serviceConfig;
}
}
}