// Copyright © WireMock.Net #pragma warning disable CS1591 using WireMock.Matchers; using WireMock.Server; // ReSharper disable once CheckNamespace namespace WireMock.FluentAssertions; public partial class WireMockAssertions(IWireMockServer subject, int? callsCount) { public const string Any = "*"; public int? CallsCount { get; } = callsCount; public IReadOnlyList RequestMessages { get; private set; } = subject.LogEntries.Select(logEntry => logEntry.RequestMessage).OfType().ToList(); public (Func, IReadOnlyList> Filter, Func, bool> Condition) BuildFilterAndCondition(Func predicate) { IReadOnlyList filter(IReadOnlyList requests) => requests.Where(predicate).ToList(); return (filter, requests => (CallsCount is null && filter(requests).Any()) || CallsCount == filter(requests).Count); } public (Func, IReadOnlyList> Filter, Func, bool> Condition) BuildFilterAndCondition(Func expression, IStringMatcher matcher) { return BuildFilterAndCondition(r => matcher.IsMatch(expression(r)).IsPerfect()); } public (Func, IReadOnlyList> Filter, Func, bool> Condition) BuildFilterAndCondition(Func expression, IObjectMatcher matcher) { return BuildFilterAndCondition(r => matcher.IsMatch(expression(r)).IsPerfect()); } public void FilterRequestMessages(Func, IReadOnlyList> filter) { RequestMessages = filter(RequestMessages).ToList(); } }