using Cleanuparr.Api.DependencyInjection; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Infrastructure; using Microsoft.Extensions.DependencyInjection; namespace Cleanuparr.Api.Tests.TestHelpers; /// /// Attaches a minimal MVC (with a real /// and ) to a directly-instantiated controller so that /// this.ProblemResult(...) can build problem-details responses in unit tests. /// public static class ControllerTestContext { private static readonly IServiceProvider Services = BuildServices(); private static IServiceProvider BuildServices() { ServiceCollection services = new(); services.AddLogging(); services.AddControllers(); services.AddCleanuparrProblemDetails(); return services.BuildServiceProvider(); } public static void Attach(ControllerBase controller) { controller.ControllerContext = new ControllerContext { HttpContext = new DefaultHttpContext { RequestServices = Services }, }; controller.ProblemDetailsFactory = Services.GetRequiredService(); } }