WordPress.org

Make WordPress Core


Ignore:
Timestamp:
05/11/2017 06:31:26 PM (5 years ago)
Author:
jnylen0
Message:

REST API: Tests: Remove and prohibit errors when generating wp-api.js fixtures.

During a PHPUnit test suite run, a file named wp-api-generated.js is created which contains some response objects that serve as fixtures for the wp-api.js client unit tests.

Previously, some of these API responses were actually error objects, which isn't what we want for testing. This commit fixes the existing error responses and prevents this situation in the future.

Fixes #40734.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/rest-api/rest-schema-setup.php

    r40628 r40629  
    1414 */
    1515class WP_Test_REST_Schema_Initialization extends WP_Test_REST_TestCase {
     16    const YOUTUBE_VIDEO_ID = 'i_cVJgIz_Cs';
    1617
    1718    public function setUp() {
     
    2223        $this->server = $wp_rest_server = new Spy_REST_Server;
    2324        do_action( 'rest_api_init' );
     25
     26        add_filter( 'pre_http_request', array( $this, 'mock_embed_request' ), 10, 3 );
    2427    }
    2528
    2629    public function tearDown() {
    2730        parent::tearDown();
    28         remove_filter( 'rest_url', array( $this, 'test_rest_url_for_leading_slash' ), 10, 2 );
     31
    2932        /** @var WP_REST_Server $wp_rest_server */
    3033        global $wp_rest_server;
    3134        $wp_rest_server = null;
     35
     36        remove_filter( 'pre_http_request', array( $this, 'mock_embed_request' ), 10, 3 );
     37    }
     38
     39    public function mock_embed_request( $preempt, $r, $url ) {
     40        unset( $preempt, $r );
     41
     42        // Mock request to YouTube Embed.
     43        if ( false !== strpos( $url, self::YOUTUBE_VIDEO_ID ) ) {
     44            return array(
     45                'response' => array(
     46                    'code' => 200,
     47                ),
     48                'body' => wp_json_encode(
     49                    array(
     50                        'version'          => '1.0',
     51                        'type'             => 'video',
     52                        'provider_name'    => 'YouTube',
     53                        'provider_url'     => 'https://www.youtube.com',
     54                        'thumbnail_width'  => 480,
     55                        'width'            => 500,
     56                        'thumbnail_height' => 360,
     57                        'html'             => '<iframe width="500" height="375" src="https://www.youtube.com/embed/' . self::YOUTUBE_VIDEO_ID . '?feature=oembed" frameborder="0" allowfullscreen></iframe>',
     58                        'author_name'      => 'Jorge Rubira Santos',
     59                        'thumbnail_url'    => 'https://i.ytimg.com/vi/' . self::YOUTUBE_VIDEO_ID . '/hqdefault.jpg',
     60                        'title'            => 'No te olvides de poner el Where en el Delete From. (Una cancion para programadores)',
     61                        'height'           => 375,
     62                    )
     63                ),
     64            );
     65        } else {
     66            return array(
     67                'response' => array(
     68                    'code' => 404,
     69                ),
     70            );
     71        }
    3272    }
    3373
     
    110150            'post_content' => 'Updated post content.',
    111151        ) );
     152        $post_revisions = array_values( wp_get_post_revisions( $post_id ) );
     153        $post_revision_id = $post_revisions[ count( $post_revisions ) - 1 ]->ID;
    112154
    113155        $page_id = $this->factory->post->create( array(
     
    125167            'post_content' => 'Updated page content.',
    126168        ) );
     169        $page_revisions = array_values( wp_get_post_revisions( $page_id ) );
     170        $page_revision_id = $page_revisions[ count( $page_revisions ) - 1 ]->ID;
    127171
    128172        $tag_id = $this->factory->tag->create( array(
     
    166210                'route' => '/oembed/1.0/embed',
    167211                'name'  => 'oembeds',
     212                'args'  => array(
     213                    'url' => '?p=' . $post_id,
     214                ),
    168215            ),
    169216            array(
    170217                'route' => '/oembed/1.0/proxy',
    171218                'name'  => 'oembedProxy',
     219                'args'  => array(
     220                    'url' => 'https://www.youtube.com/watch?v=i_cVJgIz_Cs',
     221                ),
    172222            ),
    173223            array(
     
    184234            ),
    185235            array(
    186                 'route' => '/wp/v2/posts/' . $post_id . '/revisions/1',
     236                'route' => '/wp/v2/posts/' . $post_id . '/revisions/' . $post_revision_id,
    187237                'name'  => 'revision',
    188238            ),
     
    200250            ),
    201251            array(
    202                 'route' => '/wp/v2/pages/'. $page_id . '/revisions/1',
     252                'route' => '/wp/v2/pages/'. $page_id . '/revisions/' . $page_revision_id,
    203253                'name'  => 'pageRevision',
    204254            ),
     
    216266            ),
    217267            array(
    218                 'route' => '/wp/v2/types/',
     268                'route' => '/wp/v2/types/post',
    219269                'name'  => 'TypeModel',
    220270            ),
     
    268318            ),
    269319            array(
    270                 'route' => '/wp/v2/comments/1',
     320                'route' => '/wp/v2/comments/' . $comment_id,
    271321                'name'  => 'CommentModel',
    272322            ),
     
    286336        foreach ( $routes_to_generate_data as $route ) {
    287337            $request = new WP_REST_Request( 'GET', $route['route'] );
     338            if ( isset( $route['args'] ) ) {
     339                $request->set_query_params( $route['args'] );
     340            }
    288341            $response = $this->server->dispatch( $request );
     342            $status = $response->get_status();
    289343            $data = $response->get_data();
    290344
     345            $this->assertEquals(
     346                200,
     347                $response->get_status(),
     348                "HTTP $status from $route[route]: " . json_encode( $data )
     349            );
    291350            $this->assertTrue( ! empty( $data ), $route['name'] . ' route should return data.' );
    292351
     
    320379     */
    321380    private static $fixture_replacements = array(
     381        'oembeds.html' => '<blockquote class="wp-embedded-content">...</blockquote>',
    322382        'PostsCollection.0.id' => 3,
    323383        'PostsCollection.0.guid.rendered' => 'http://example.org/?p=3',
     
    332392        'PostModel.guid.rendered' => 'http://example.org/?p=3',
    333393        'PostModel.link' => 'http://example.org/?p=3',
    334         'postRevisions.0.author' => '2',
     394        'postRevisions.0.author' => 2,
    335395        'postRevisions.0.id' => 4,
    336396        'postRevisions.0.parent' => 3,
     
    338398        'postRevisions.0.guid.rendered' => 'http://example.org/?p=4',
    339399        'postRevisions.0._links.parent.0.href' => 'http://example.org/?rest_route=/wp/v2/posts/3',
     400        'revision.author' => 2,
     401        'revision.id' => 4,
     402        'revision.parent' => 3,
     403        'revision.slug' => '3-revision-v1',
     404        'revision.guid.rendered' => 'http://example.org/?p=4',
    340405        'PagesCollection.0.id' => 5,
    341406        'PagesCollection.0.guid.rendered' => 'http://example.org/?page_id=5',
     
    348413        'PageModel.guid.rendered' => 'http://example.org/?page_id=5',
    349414        'PageModel.link' => 'http://example.org/?page_id=5',
    350         'pageRevisions.0.author' => '2',
     415        'pageRevisions.0.author' => 2,
    351416        'pageRevisions.0.id' => 6,
    352417        'pageRevisions.0.parent' => 5,
     
    354419        'pageRevisions.0.guid.rendered' => 'http://example.org/?p=6',
    355420        'pageRevisions.0._links.parent.0.href' => 'http://example.org/?rest_route=/wp/v2/pages/5',
     421        'pageRevision.author' => 2,
     422        'pageRevision.id' => 6,
     423        'pageRevision.parent' => 5,
     424        'pageRevision.slug' => '5-revision-v1',
     425        'pageRevision.guid.rendered' => 'http://example.org/?p=6',
    356426        'MediaCollection.0.id' => 7,
    357427        'MediaCollection.0.guid.rendered' => 'http://example.org/?attachment_id=7',
     
    378448        'CommentsCollection.0._links.self.0.href' => 'http://example.org/?rest_route=/wp/v2/comments/2',
    379449        'CommentsCollection.0._links.up.0.href' => 'http://example.org/?rest_route=/wp/v2/posts/3',
     450        'CommentModel.id' => 2,
     451        'CommentModel.post' => 3,
     452        'CommentModel.link' => 'http://example.org/?p=3#comment-2',
    380453    );
    381454
Note: See TracChangeset for help on using the changeset viewer.