using Microsoft.AspNetCore.WebUtilities; using Shouldly; namespace JSMR.Tests.Http; internal sealed class FakeHttpMessageHandler(Func handler) : HttpMessageHandler { public List Requests { get; } = []; protected override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { Requests.Add(request); return Task.FromResult(handler(request)); } } public static class HttpRequestMessageAssertions { public static void ShouldHavePath(this HttpRequestMessage request, string expectedPath) { request.RequestUri.ShouldNotBeNull(); request.RequestUri!.AbsolutePath.ShouldBe(expectedPath); } public static void ShouldHaveQueryParam(this HttpRequestMessage request, string key, string expectedValue) { request.RequestUri.ShouldNotBeNull(); var query = QueryHelpers.ParseQuery(request.RequestUri!.Query); query[key].ToString().ShouldBe(expectedValue); } } //internal sealed class FakeHttpMessageHandler : HttpMessageHandler //{ // private readonly Func _handler; // public List Requests { get; } = []; // public FakeHttpMessageHandler(Func handler) // { // _handler = handler; // } // public FakeHttpMessageHandler(Func handler) // : this((request, _) => handler(request)) // { // } // protected override Task SendAsync( // HttpRequestMessage request, // CancellationToken cancellationToken) // { // Requests.Add(request); // HttpResponseMessage response = _handler(request, cancellationToken); // return Task.FromResult(response); // } //}