mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-04-23 01:08:49 +02:00
JmesPathMatcherTests (#998)
This commit is contained in:
@@ -118,8 +118,9 @@ public class JsonPathMatcher : IStringMatcher, IObjectMatcher
|
|||||||
|
|
||||||
// The SelectToken method can accept a string path to a child token ( i.e. "Manufacturers[0].Products[0].Price").
|
// The SelectToken method can accept a string path to a child token ( i.e. "Manufacturers[0].Products[0].Price").
|
||||||
// In that case it will return a JValue (some type) which does not implement the IEnumerable interface.
|
// In that case it will return a JValue (some type) which does not implement the IEnumerable interface.
|
||||||
return MatchScores.ToScore(
|
var values = _patterns.Select(pattern => array.SelectToken(pattern.GetPattern()) != null).ToArray();
|
||||||
_patterns.Select(pattern => array.SelectToken(pattern.GetPattern()) != null).ToArray(), MatchOperator);
|
|
||||||
|
return MatchScores.ToScore(values, MatchOperator);
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/WireMock-Net/WireMock.Net/issues/965
|
// https://github.com/WireMock-Net/WireMock.Net/issues/965
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using FluentAssertions;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using NFluent;
|
using NFluent;
|
||||||
using WireMock.Matchers;
|
using WireMock.Matchers;
|
||||||
@@ -163,4 +164,30 @@ public class JmesPathMatcherTests
|
|||||||
// Assert
|
// Assert
|
||||||
Check.That(match).IsEqualTo(0.0);
|
Check.That(match).IsEqualTo(0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void JmesPathMatcher_IsMatch_MultiplePatternsUsingMatchOperatorAnd()
|
||||||
|
{
|
||||||
|
// Assign
|
||||||
|
var matcher = new JmesPathMatcher(MatchOperator.And, "things.x == 'RequiredThing'", "things.x == 'abc'");
|
||||||
|
|
||||||
|
// Act
|
||||||
|
double score = matcher.IsMatch(JObject.Parse("{ \"things\": { \"x\": \"RequiredThing\" } }")).Score;
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
score.Should().Be(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void JmesPathMatcher_IsMatch_MultiplePatternsUsingMatchOperatorOr()
|
||||||
|
{
|
||||||
|
// Assign
|
||||||
|
var matcher = new JmesPathMatcher(MatchOperator.Or, "things.x == 'RequiredThing'", "things.x == 'abc'");
|
||||||
|
|
||||||
|
// Act
|
||||||
|
double score = matcher.IsMatch(JObject.Parse("{ \"things\": { \"x\": \"RequiredThing\" } }")).Score;
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
score.Should().Be(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using FluentAssertions;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using NFluent;
|
using NFluent;
|
||||||
using WireMock.Matchers;
|
using WireMock.Matchers;
|
||||||
@@ -324,4 +325,52 @@ public class JsonPathMatcherTests
|
|||||||
// Assert
|
// Assert
|
||||||
Check.That(match).IsEqualTo(1.0);
|
Check.That(match).IsEqualTo(1.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void JsonPathMatcher_IsMatch_MultiplePatternsUsingMatchOperatorAnd()
|
||||||
|
{
|
||||||
|
// Assign
|
||||||
|
var matcher = new JsonPathMatcher(MatchBehaviour.AcceptOnMatch, MatchOperator.And, "$.arr[0].sub[0].subline1", "$.arr[0].line2");
|
||||||
|
|
||||||
|
// Act
|
||||||
|
double match = matcher.IsMatch(JObject.Parse(@"{
|
||||||
|
""name"": ""PathSelectorTest"",
|
||||||
|
""test"": ""test"",
|
||||||
|
""test2"": ""test2"",
|
||||||
|
""arr"": [{
|
||||||
|
""line1"": ""line1"",
|
||||||
|
""sub"":[
|
||||||
|
{
|
||||||
|
""subline1"":""subline1""
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}")).Score;
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
match.Should().Be(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void JsonPathMatcher_IsMatch_MultiplePatternsUsingMatchOperatorOr()
|
||||||
|
{
|
||||||
|
// Assign
|
||||||
|
var matcher = new JsonPathMatcher(MatchBehaviour.AcceptOnMatch, MatchOperator.Or, "$.arr[0].sub[0].subline2", "$.arr[0].line1");
|
||||||
|
|
||||||
|
// Act
|
||||||
|
double match = matcher.IsMatch(JObject.Parse(@"{
|
||||||
|
""name"": ""PathSelectorTest"",
|
||||||
|
""test"": ""test"",
|
||||||
|
""test2"": ""test2"",
|
||||||
|
""arr"": [{
|
||||||
|
""line1"": ""line1"",
|
||||||
|
""sub"":[
|
||||||
|
{
|
||||||
|
""subline1"":""subline1""
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}")).Score;
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
match.Should().Be(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user