using System.Net;
using System.Text;
namespace ClaudeDo.Worker.Tests.Tickets;
///
/// Fakes the HTTP transport for BandelTicketClient tests. No test using this may touch the
/// network — reused by later tasks that also exercise the ticket client.
///
internal sealed class StubHandler : HttpMessageHandler
{
public readonly List Requests = new();
public readonly List Bodies = new();
private readonly Func _respond;
public StubHandler(Func respond) => _respond = respond;
protected override async Task SendAsync(HttpRequestMessage request, CancellationToken ct)
{
Requests.Add(request);
Bodies.Add(request.Content is null ? "" : await request.Content.ReadAsStringAsync(ct));
var (code, body) = _respond(request);
return new HttpResponseMessage(code) { Content = new StringContent(body, Encoding.UTF8, "application/json") };
}
}