// Copyright (c) Umbraco. // See LICENSE for more details. using Microsoft.AspNetCore.Mvc.Testing; using Microsoft.Extensions.Hosting; namespace Umbraco.Cms.Tests.Integration.TestServerTest; public class UmbracoWebApplicationFactory : WebApplicationFactory where TStartup : class { private readonly Action _beforeStart; private readonly Func _createHostBuilder; private IHost _host; /// /// Constructor to create a new WebApplicationFactory /// /// Method to create the IHostBuilder public UmbracoWebApplicationFactory(Func createHostBuilder) => _createHostBuilder = createHostBuilder; protected override IHostBuilder CreateHostBuilder() => _createHostBuilder(); protected override IHost CreateHost(IHostBuilder builder) { _host = builder.Build(); _beforeStart?.Invoke(_host); _host.Start(); return _host; } public void ClearHost() { _host.StopAsync().GetAwaiter().GetResult(); } }