public override bool Matches(object expected, object actual, MatchingContext context, Action <object, object, MatchingContext> deepMatch) { var actualBody = (JObject)actual; foreach (var property in actualBody.Properties()) { deepMatch(null, property.Value, context.For(new PropertyPathPart(property.Name))); } return(true); }
public override bool Matches(object expected, object actual, MatchingContext context, Action <object, object, MatchingContext> deepMatch) { if (expected is JObject expectedObject && actual is JObject actualObject) { foreach (var property in expectedObject.Properties().Concat(actualObject.Properties()).Select(p => p.Name).Distinct().ToArray()) { var expectedProperty = expectedObject.Properties().FirstOrDefault(p => p.Name.Equals(property)); var actualProperty = actualObject.Properties().FirstOrDefault(p => p.Name.Equals(property)); var propertyName = (expectedProperty ?? actualProperty)?.Name ?? property; deepMatch(expectedProperty?.Value, actualProperty?.Value, context.For(new PropertyPathPart(propertyName), null, new TypePropertyMatcher(PropertyPath + "." + propertyName, applyToAll))); } context.Terminate(); return(context.Result.Matches); } return(expected.GetType() == actual.GetType()); }
public override bool Matches(object expected, object actual, MatchingContext context, Action <object, object, MatchingContext> deepMatch) { var e = (JObject)expected ?? new JObject(); var a = (JObject)actual ?? new JObject(); var expectedHeaders = e.Properties().Select(p => p.Name.ToLowerInvariant()).ToArray(); var actualHeaders = a.Properties().Select(p => p.Name.ToLowerInvariant()).ToArray(); foreach (var header in actualHeaders) { var expectedHeader = e.Properties().FirstOrDefault(p => p.Name.Equals(header, StringComparison.InvariantCultureIgnoreCase))?.Value as JValue; var actualHeader = a.Properties().FirstOrDefault(p => p.Name.Equals(header, StringComparison.InvariantCultureIgnoreCase))?.Value as JValue; var childContext = context.For(new PropertyPathPart(header), ignoreExpected: expectedHeader == null); deepMatch(expectedHeader ?? JValue.CreateString(""), actualHeader, childContext); } context.Terminate(); return(!expectedHeaders.Except(actualHeaders).Any()); }