From 62fb9d5a385d42ade4040613880f43f784092013 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valentin=20Breu=C3=9F?= Date: Tue, 10 Feb 2026 22:40:54 +0100 Subject: [PATCH] refactor: make `HttpContentParameterWrapper` public --- Source/Mockolate/Web/ItExtensions.HttpContent.cs | 15 +++++++++++++-- .../Expected/Mockolate_net10.0.txt | 13 +++++++++++++ .../Expected/Mockolate_net8.0.txt | 13 +++++++++++++ .../Expected/Mockolate_netstandard2.0.txt | 13 +++++++++++++ 4 files changed, 52 insertions(+), 2 deletions(-) diff --git a/Source/Mockolate/Web/ItExtensions.HttpContent.cs b/Source/Mockolate/Web/ItExtensions.HttpContent.cs index 77a21786..526c003b 100644 --- a/Source/Mockolate/Web/ItExtensions.HttpContent.cs +++ b/Source/Mockolate/Web/ItExtensions.HttpContent.cs @@ -235,26 +235,35 @@ public bool Matches(HttpContent content, HttpRequestMessage? message) } } - private class HttpContentParameterWrapper(IHttpContentParameter parameter) : IHttpContentParameter, + /// + /// An abstract wrapper base class for . + /// + public abstract class HttpContentParameterWrapper(IHttpContentParameter parameter) : IHttpContentParameter, IHttpRequestMessagePropertyParameter, IParameter { + /// public IParameter Do(Action callback) => parameter.Do(callback); + /// public IHttpContentHeaderParameter WithHeaders( params IEnumerable<(string Name, HttpHeaderValue Value)> headers) => parameter.WithHeaders(headers); + /// public IHttpContentParameter WithString(Func predicate) => parameter.WithString(predicate); + /// public IHttpContentParameter WithBytes(Func predicate) => parameter.WithBytes(predicate); + /// public IHttpContentParameter WithMediaType(string? mediaType) => parameter.WithMediaType(mediaType); - public bool Matches(HttpContent? value, HttpRequestMessage? requestMessage) + bool IHttpRequestMessagePropertyParameter.Matches(HttpContent? value, + HttpRequestMessage? requestMessage) { if (parameter is IHttpRequestMessagePropertyParameter requestMessagePropertyParameter) { @@ -264,9 +273,11 @@ public bool Matches(HttpContent? value, HttpRequestMessage? requestMessage) return Matches(value); } + /// public bool Matches(object? value) => ((IParameter)parameter).Matches(value); + /// public void InvokeCallbacks(object? value) => ((IParameter)parameter).InvokeCallbacks(value); } diff --git a/Tests/Mockolate.Api.Tests/Expected/Mockolate_net10.0.txt b/Tests/Mockolate.Api.Tests/Expected/Mockolate_net10.0.txt index 72fb52c2..a7140d37 100644 --- a/Tests/Mockolate.Api.Tests/Expected/Mockolate_net10.0.txt +++ b/Tests/Mockolate.Api.Tests/Expected/Mockolate_net10.0.txt @@ -1860,6 +1860,19 @@ namespace Mockolate.Web } public static class ItExtensions { + public abstract class HttpContentParameterWrapper : Mockolate.Parameters.IParameter, Mockolate.Parameters.IParameter, Mockolate.Web.ItExtensions.IHttpContentParameter, Mockolate.Web.ItExtensions.IHttpHeaderParameter + { + protected HttpContentParameterWrapper(Mockolate.Web.ItExtensions.IHttpContentParameter parameter) { } + public Mockolate.Parameters.IParameter Do(System.Action callback) { } + public void InvokeCallbacks(object? value) { } + public bool Matches(object? value) { } + public Mockolate.Web.ItExtensions.IHttpContentParameter WithBytes(System.Func predicate) { } + public Mockolate.Web.ItExtensions.IHttpContentHeaderParameter WithHeaders([System.Runtime.CompilerServices.TupleElementNames(new string[] { + "Name", + "Value"})] System.Collections.Generic.IEnumerable> headers) { } + public Mockolate.Web.ItExtensions.IHttpContentParameter WithMediaType(string? mediaType) { } + public Mockolate.Web.ItExtensions.IHttpContentParameter WithString(System.Func predicate) { } + } public interface IFormDataContentParameter : Mockolate.Parameters.IParameter, Mockolate.Web.ItExtensions.IHttpContentParameter, Mockolate.Web.ItExtensions.IHttpHeaderParameter { Mockolate.Web.ItExtensions.IFormDataContentParameter Exactly(); diff --git a/Tests/Mockolate.Api.Tests/Expected/Mockolate_net8.0.txt b/Tests/Mockolate.Api.Tests/Expected/Mockolate_net8.0.txt index 7fed6eec..864ccb26 100644 --- a/Tests/Mockolate.Api.Tests/Expected/Mockolate_net8.0.txt +++ b/Tests/Mockolate.Api.Tests/Expected/Mockolate_net8.0.txt @@ -1859,6 +1859,19 @@ namespace Mockolate.Web } public static class ItExtensions { + public abstract class HttpContentParameterWrapper : Mockolate.Parameters.IParameter, Mockolate.Parameters.IParameter, Mockolate.Web.ItExtensions.IHttpContentParameter, Mockolate.Web.ItExtensions.IHttpHeaderParameter + { + protected HttpContentParameterWrapper(Mockolate.Web.ItExtensions.IHttpContentParameter parameter) { } + public Mockolate.Parameters.IParameter Do(System.Action callback) { } + public void InvokeCallbacks(object? value) { } + public bool Matches(object? value) { } + public Mockolate.Web.ItExtensions.IHttpContentParameter WithBytes(System.Func predicate) { } + public Mockolate.Web.ItExtensions.IHttpContentHeaderParameter WithHeaders([System.Runtime.CompilerServices.TupleElementNames(new string[] { + "Name", + "Value"})] System.Collections.Generic.IEnumerable> headers) { } + public Mockolate.Web.ItExtensions.IHttpContentParameter WithMediaType(string? mediaType) { } + public Mockolate.Web.ItExtensions.IHttpContentParameter WithString(System.Func predicate) { } + } public interface IFormDataContentParameter : Mockolate.Parameters.IParameter, Mockolate.Web.ItExtensions.IHttpContentParameter, Mockolate.Web.ItExtensions.IHttpHeaderParameter { Mockolate.Web.ItExtensions.IFormDataContentParameter Exactly(); diff --git a/Tests/Mockolate.Api.Tests/Expected/Mockolate_netstandard2.0.txt b/Tests/Mockolate.Api.Tests/Expected/Mockolate_netstandard2.0.txt index 6bf1ca20..f946ed4f 100644 --- a/Tests/Mockolate.Api.Tests/Expected/Mockolate_netstandard2.0.txt +++ b/Tests/Mockolate.Api.Tests/Expected/Mockolate_netstandard2.0.txt @@ -1800,6 +1800,19 @@ namespace Mockolate.Web } public static class ItExtensions { + public abstract class HttpContentParameterWrapper : Mockolate.Parameters.IParameter, Mockolate.Parameters.IParameter, Mockolate.Web.ItExtensions.IHttpContentParameter, Mockolate.Web.ItExtensions.IHttpHeaderParameter + { + protected HttpContentParameterWrapper(Mockolate.Web.ItExtensions.IHttpContentParameter parameter) { } + public Mockolate.Parameters.IParameter Do(System.Action callback) { } + public void InvokeCallbacks(object? value) { } + public bool Matches(object? value) { } + public Mockolate.Web.ItExtensions.IHttpContentParameter WithBytes(System.Func predicate) { } + public Mockolate.Web.ItExtensions.IHttpContentHeaderParameter WithHeaders([System.Runtime.CompilerServices.TupleElementNames(new string[] { + "Name", + "Value"})] System.Collections.Generic.IEnumerable> headers) { } + public Mockolate.Web.ItExtensions.IHttpContentParameter WithMediaType(string? mediaType) { } + public Mockolate.Web.ItExtensions.IHttpContentParameter WithString(System.Func predicate) { } + } public interface IFormDataContentParameter : Mockolate.Parameters.IParameter, Mockolate.Web.ItExtensions.IHttpContentParameter, Mockolate.Web.ItExtensions.IHttpHeaderParameter { Mockolate.Web.ItExtensions.IFormDataContentParameter Exactly();