Files
WireMock.Net-wiremock/src/WireMock.Net.RestClient.AwesomeAssertions/Assertions/WireMockAdminApiAssertions.cs
Stef Heyenrath 06b5a7ab84 WireMock.Net.RestClient.AwesomeAssertions (#1427)
* WireMock.Net.RestClient.AwesomeAssertions

* ok

* atpath

* fix test

* sonar fixes

* ports
2026-02-22 10:12:32 +01:00

43 lines
1.9 KiB
C#

// Copyright © WireMock.Net
#pragma warning disable CS1591
using WireMock.Admin.Requests;
using WireMock.Matchers;
// ReSharper disable once CheckNamespace
namespace WireMock.Client.AwesomeAssertions;
public partial class WireMockAdminApiAssertions(IWireMockAdminApi subject, int? callsCount, AssertionChain chain)
{
public const string Any = "*";
public int? CallsCount { get; } = callsCount;
public IReadOnlyList<LogRequestModel> RequestMessages { get; private set; } = subject.GetRequestsAsync().GetAwaiter().GetResult()
.Select(logEntry => logEntry.Request)
.OfType<LogRequestModel>()
.ToList();
public (Func<IReadOnlyList<LogRequestModel>, IReadOnlyList<LogRequestModel>> Filter, Func<IReadOnlyList<LogRequestModel>, bool> Condition) BuildFilterAndCondition(Func<LogRequestModel, bool> predicate)
{
IReadOnlyList<LogRequestModel> filter(IReadOnlyList<LogRequestModel> requests) => requests.Where(predicate).ToList();
return (filter, requests => (CallsCount is null && filter(requests).Any()) || CallsCount == filter(requests).Count);
}
public (Func<IReadOnlyList<LogRequestModel>, IReadOnlyList<LogRequestModel>> Filter, Func<IReadOnlyList<LogRequestModel>, bool> Condition) BuildFilterAndCondition(Func<LogRequestModel, string?> expression, IStringMatcher matcher)
{
return BuildFilterAndCondition(r => matcher.IsMatch(expression(r)).IsPerfect());
}
public (Func<IReadOnlyList<LogRequestModel>, IReadOnlyList<LogRequestModel>> Filter, Func<IReadOnlyList<LogRequestModel>, bool> Condition) BuildFilterAndCondition(Func<LogRequestModel, object?> expression, IObjectMatcher matcher)
{
return BuildFilterAndCondition(r => matcher.IsMatch(expression(r)).IsPerfect());
}
public void FilterRequestMessages(Func<IReadOnlyList<LogRequestModel>, IReadOnlyList<LogRequestModel>> filter)
{
RequestMessages = filter(RequestMessages).ToList();
}
}