-
Notifications
You must be signed in to change notification settings - Fork 4.3k
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
[RNMobile] Add API fetch test helper #50391
Conversation
1e385f7
to
8379426
Compare
Size Change: 0 B Total Size: 1.37 MB ℹ️ View Unchanged
|
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.
LGTM! The tests pass as expected and all looks good. I just asked one question, but nothing blocking. Thanks @fluiddot! 🙌
); | ||
} | ||
); | ||
return matchedResponse?.response; |
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.
Would there be a benefit to logging an error here if there is no matchedResponse
?
if ( ! matchedResponse ) {
throw new Error( `No response for path: ${ path }` );
}
return matchedResponse.response;
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.
Actually, I originally added this condition but noticed the editor makes a set of requests always upon its initialization. This made me think that probably makes more sense to delegate checking what requests should be made or shouldn't to the test logic, instead here. In any case, we could add an option to make this function more restrictive and fail the test if an unexpected request is made. Maybe it's useful in some cases 🤔 .
For reference, the following requests are made when the editor is initialized:
/wp/v2/settings
/wp/v2/media
/wp/v2/pages
/wp/v2/block-patterns/patterns
/wp/v2/block-patterns/categories
/wp/v2/posts/post-id-<POST_GUID>
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.
Thank you for sharing the logic behind that decision, that makes sense to me.
In any case, we could add an option to make this function more restrictive and fail the test if an unexpected request is made. Maybe it's useful in some cases 🤔 .
I trust your judgement, but have a sense that the value would be relatively low. The current code looks good to me :) thanks again for expanding on the logic here.
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.
I trust your judgement, but have a sense that the value would be relatively low. The current code looks good to me :) thanks again for expanding on the logic here.
Ok, I'll merge the PR as-is, thanks!
What?
Adds a test helper to allow mocking API fetch requests in tests.
Why?
This helper will simplify the test logic for cases blocks/components make API requests.
How?
A new helper has been added that accepts an array of objects with the following parameters:
request
: This object contains the parameters that we'll use to match requests. The parameters are the same as we pass to theapiFetch
function.response
: The result we want to return to requests that match the parameters set above.Additionally, some tests of the Image block have been updated to use this helper. This block fetches media data from the API when is mounted, so it was a good example to use the helper.
Testing Instructions
npm run native test -- image/test/edit.native
Unit Tests / Mobile
CI jobs pass.Testing Instructions for Keyboard
N/A
Screenshots or screencast
N/A