[wp-trac] [WordPress Trac] #53842: Review the type of select return values

WordPress Trac noreply at wordpress.org
Fri Jul 30 22:06:25 UTC 2021


#53842: Review the type of select return values
------------------------------+-----------------------------
 Reporter:  jrf               |      Owner:  (none)
     Type:  defect (bug)      |     Status:  new
 Priority:  normal            |  Milestone:  Awaiting Review
Component:  Build/Test Tools  |    Version:
 Severity:  normal            |   Keywords:  2nd-opinion
  Focuses:  rest-api          |
------------------------------+-----------------------------
 In addressing ticket #46149, four tests were encountered which were
 testing (part of) a return value of WP Core functions, but were found to
 be using the wrong value type in this comparison.

 This was discovered due to the fact that the `assertContains()` method in
 PHPUnit uses strict type comparisons as of PHPUnit 8.0.2.

 For the time being, the tests will be updated to reflect the REAL return
 type per proposed commit https://github.com/jrfnl/wordpress-develop-
 official/commit/64dd09d5c292c3eac80419d5a1a325dab453a5ed

 This ticket is being opened to follow up on this as it should be
 investigated whether the return type of these WP Core function as-is is
 actually correct and the test update was therefore justified. Or whether
 the test update should be reverted and the actual WP Core functions should
 be updated.

 == Details

 ===
 `Tests_Comment_GetPageOfComment::test_page_number_when_unapproved_comments_are_included_for_current_commenter()`
 and
 `Tests_Comment_GetPageOfComment::test_page_number_when_unapproved_comments_are_included_for_current_user()`

 Both these tests generate a comment ID using a test Factory class:
 {{{#!php
 <?php
 $new_unapproved = self::factory()->comment->create(
         $comment_args
 );
 }}}

 `$new_unapproved` will now contain a comment ID as an integer.
 This integer is expected to be included in a list retrieved via the
 [https://developer.wordpress.org/reference/functions/get_comments/
 `get_comments()`] function and filtered via
 [https://developer.wordpress.org/reference/functions/wp_list_pluck/
 `wp_list_pluck()`].

 Based on these two tests, the `comment_ID` as returned in the array
 retrieved via `get_comments()` is a string, not an integer.

 So the questions for these two tests are:
 * Should the `comment_ID` returned by `get_comments()` be a string or an
 integer ?
 * If the `get_comments()` function should remain unchanged, should the
 TestCase::factory()->comment->create()` method be adjusted to return a
 string for the ID value instead of an integer ?
 * If the answer to both the above questions is "no", no further action is
 needed once the proposed commit mentioned above has been committed.

 ===
 `WP_Test_REST_Post_Meta_Fields::test_set_value_multiple_custom_schema()`
 and
 `WP_Test_REST_Term_Meta_Fields::test_set_value_multiple_custom_schema()`

 These two tests both update the post meta of a WP post via a REST API POST
 request.
 The data to be set is passed as integers:
 {{{#!php
 <?php
 $data = array(
         'meta' => array(
                 'test_custom_schema_multi' => array( 2, 8 ),
         ),
 );
 $request->set_body_params( $data );
 $response = rest_get_server()->dispatch( $request );
 }}}

 The test subsequently requests the post meta information via a call to
 [https://developer.wordpress.org/reference/functions/get_post_meta/
 `get_post_meta()`] and ensures that the returned array contains both
 values.
 The values returned in the array from `get_post_meta()`, however are
 ''strings'', not integers.

 So the questions for these two tests are:
 * Where does the type change from integer to string happen ?
 * Is the data when set via the REST API being saved correctly ?
 * Does the Core code need to change or is the test update correct ?

 In this case, I suspect the type change ''may'' be due to the fact that
 all data received from `$_POST` will always be in string format, however,
 the handling of these API requests should be investigated to be sure.

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/53842>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list