mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-06-24 06:16:24 +02:00
04d53f3a9e
* feat(awesome-assertions): Added new project WireMock.Net.AwesomeAssertions * feat(awesome-assertions): Applied dotnet naming convention for private readonly fields --------- Co-authored-by: Francesco Venturoli <f.venturoli@crif.com>
48 lines
2.0 KiB
C#
48 lines
2.0 KiB
C#
// Copyright © WireMock.Net
|
|
|
|
#pragma warning disable CS1591
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using WireMock.Matchers;
|
|
using WireMock.Server;
|
|
|
|
// ReSharper disable once CheckNamespace
|
|
namespace WireMock.FluentAssertions;
|
|
|
|
public partial class WireMockAssertions
|
|
{
|
|
public const string Any = "*";
|
|
|
|
public int? CallsCount { get; }
|
|
public IReadOnlyList<IRequestMessage> RequestMessages { get; private set; }
|
|
private readonly AssertionChain _chain;
|
|
|
|
public WireMockAssertions(IWireMockServer subject, int? callsCount, AssertionChain chain)
|
|
{
|
|
CallsCount = callsCount;
|
|
RequestMessages = subject.LogEntries.Select(logEntry => logEntry.RequestMessage).ToList();
|
|
_chain = chain;
|
|
}
|
|
|
|
public (Func<IReadOnlyList<IRequestMessage>, IReadOnlyList<IRequestMessage>> Filter, Func<IReadOnlyList<IRequestMessage>, bool> Condition) BuildFilterAndCondition(Func<IRequestMessage, bool> predicate)
|
|
{
|
|
Func<IReadOnlyList<IRequestMessage>, IReadOnlyList<IRequestMessage>> filter = requests => requests.Where(predicate).ToList();
|
|
|
|
return (filter, requests => (CallsCount is null && filter(requests).Any()) || CallsCount == filter(requests).Count);
|
|
}
|
|
|
|
public (Func<IReadOnlyList<IRequestMessage>, IReadOnlyList<IRequestMessage>> Filter, Func<IReadOnlyList<IRequestMessage>, bool> Condition) BuildFilterAndCondition(Func<IRequestMessage, string?> expression, IStringMatcher matcher)
|
|
{
|
|
return BuildFilterAndCondition(r => matcher.IsMatch(expression(r)).IsPerfect());
|
|
}
|
|
|
|
public (Func<IReadOnlyList<IRequestMessage>, IReadOnlyList<IRequestMessage>> Filter, Func<IReadOnlyList<IRequestMessage>, bool> Condition) BuildFilterAndCondition(Func<IRequestMessage, object?> expression, IObjectMatcher matcher)
|
|
{
|
|
return BuildFilterAndCondition(r => matcher.IsMatch(expression(r)).IsPerfect());
|
|
}
|
|
|
|
public void FilterRequestMessages(Func<IReadOnlyList<IRequestMessage>, IReadOnlyList<IRequestMessage>> filter)
|
|
{
|
|
RequestMessages = filter(RequestMessages).ToList();
|
|
}
|
|
} |