-
Notifications
You must be signed in to change notification settings - Fork 4.6k
Block Bindings: Make core/post-data source code more semantic
#73394
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
Conversation
core/post-data source code more semantic
|
Size Change: -18 B (0%) Total Size: 2.51 MB
ℹ️ View Unchanged
|
This reverts commit ba8ad02.
|
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message. To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
|
|
||
| it( 'should return empty object for unknown fields', () => { | ||
| const values = postDataBindings.getValues( { | ||
| select, | ||
| context: { postId: 123, postType: 'post' }, | ||
| bindings: { | ||
| content: { | ||
| source: 'core/post-date', | ||
| args: { field: 'unknown' }, | ||
| }, | ||
| }, | ||
| clientId: '123abc456', | ||
| } ); | ||
|
|
||
| expect( values.content ).toEqual( {} ); | ||
| } ); |
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.
This test case was merged into the two test cases above.
cbravobernal
left a comment
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 🚀
What?
Make Block Bindings
core/post-datasource code (and unit tests) yet more semantic.This PR also changes the source's behavior slightly:
core/post-metasource.postIdorpostTypearen't provided via context,getFieldsListwill now return an empty array. The idea is that the return value ofgetFieldsListis used to populate the dropdown of available source items for a given block. However, if there's nopostIdorpostTypeinformation available (which can be the case e.g. in a taxonomy term template), we don't want to show any items from thecore/post-datasourceWhy?
I think it's still unclear how a source's
getValuesandgetFieldsListfunctions are supposed to behave, e.g. in absence of required data, and what fallback values they are supposed to provided. A lot of that information is currently still buried in fairly subtle/implicit fallbacks mechanisms (e.g. via optional chaining). This PR seeks to make the expected behavior more explicit.How?
Some refactoring, and additional test coverage.
Testing Instructions
Verify that tests pass. Bonus points for some light smoke testing. (Use the Date block's "Post Date" and "Modified Date" variations and verify that they work as expected.)