-
Notifications
You must be signed in to change notification settings - Fork 30
Add overload of ContainSubtree that takes a config #79
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Add overload of ContainSubtree that takes a config #79
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds a new ContainSubtree overload that accepts a configuration function parameter, providing users with more control over JSON assertion options similar to the existing BeEquivalentTo methods. This enhancement addresses issue #78 by allowing custom assertion configurations when checking JSON subtrees.
- Adds a new
ContainSubtreemethod overload with configurable assertion options - Includes comprehensive test coverage for float approximation scenarios
- Updates XML documentation parameter name for clarity
Reviewed Changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| Src/FluentAssertions.Json/JTokenAssertions.cs | Adds new ContainSubtree overload with config parameter and fixes XML doc parameter name |
| Tests/FluentAssertions.Json.Specs/JTokenAssertionsSpecs.cs | Adds test cases for float approximation using the new ContainSubtree overload |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a couple of minor suggestions. You do need to update the snapshot tests using the AcceptApiChanges.ps1 to make the build green.
Also, apologies for the late review.
|
I also removed the bad copy-paste example doc and the misplaced end tag that the AI noticed |
|
The API update wasn't successful. Besides that - the changes look good. |
|
@labsin are you planning to address the rework anytime in the coming days? |
df424ea to
ff9be26
Compare
ff9be26 to
061f6fd
Compare
|
I rebased on master and redid the AcceptChanges. |
Pull Request Test Coverage Report for Build 18675139399Details
💛 - Coveralls |
| /// json.Should().ContainSubtree(JToken.Parse("{ items: [ { type: 'my-type', name: 'Alpha' } ] }")); | ||
| /// </code> | ||
| /// </example> | ||
| public AndConstraint<JTokenAssertions> ContainSubtree(string subtree, string because = "", params object[] becauseArgs) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we also augment this overload with one that takes a config?
| /// <summary> | ||
| /// Recursively asserts that the current <see cref="JToken"/> contains at least the properties or elements of the specified <paramref name="subtree"/>. | ||
| /// </summary> | ||
| /// <param name="subtree">The subtree to search for</param> | ||
| /// <param name="config">The options to consider while asserting values</param> | ||
| /// <param name="because"> | ||
| /// A formatted phrase as is supported by <see cref="string.Format(string,object[])" /> explaining why the assertion | ||
| /// is needed. If the phrase does not start with the word <i>because</i>, it is prepended automatically. | ||
| /// </param> | ||
| /// <param name="becauseArgs"> | ||
| /// Zero or more objects to format using the placeholders in <see cref="because" />. | ||
| /// </param> | ||
| /// <remarks>Use this method to match the current <see cref="JToken"/> against an arbitrary subtree, | ||
| /// permitting it to contain any additional properties or elements. This way we can test multiple properties on a <see cref="JObject"/> at once, | ||
| /// or test if a <see cref="JArray"/> contains any items that match a set of properties, assert that a JSON document has a given shape, etc. </remarks> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's also add the <example> snippets found on the other overloads here.
| /// <code> | ||
| /// var json = JToken.Parse("{ success: true, data: { id: 123, type: 'my-type', name: 'Noone' } }"); | ||
| /// json.Should().ContainSubtree(JToken.Parse("{ success: true, data: { type: 'my-type', name: 'Noone' } }")); | ||
| /// var json = JToken.Parse("{ success: true, data: { id: 123, type: 'my-type', name: 'None' } }"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: None is not more correct than Noone. (no one/no-one).
If tools think that Noone is a a typo , then let's just change it to a real name like John or Joe.
Adds a
ContainSubtreeoverload with theFunc<IJsonAssertionOptions<object>, IJsonAssertionOptions<object>> configparameter analogue with theBeEquivalentTomethods.Fixes #78