WordPress.org

Make WordPress Core

Changeset 40629


Ignore:
Timestamp:
05/11/2017 06:31:26 PM (4 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.

Location:
trunk/tests
Files:
2 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
  • trunk/tests/qunit/fixtures/wp-api-generated.js

    r40628 r40629  
    35023502
    35033503mockedApiResponse.oembeds = {
    3504     "code": "rest_missing_callback_param",
    3505     "message": "Missing parameter(s): url",
    3506     "data": {
    3507         "status": 400,
    3508         "params": [
    3509             "url"
    3510         ]
    3511     }
     3504    "version": "1.0",
     3505    "provider_name": "Test Blog",
     3506    "provider_url": "http://example.org",
     3507    "author_name": "Test Blog",
     3508    "author_url": "http://example.org",
     3509    "title": "REST API Client Fixture: Post",
     3510    "type": "rich",
     3511    "width": 600,
     3512    "height": 338,
     3513    "html": "<blockquote class=\"wp-embedded-content\">...</blockquote>"
    35123514};
    35133515
    35143516mockedApiResponse.oembedProxy = {
    3515     "code": "rest_missing_callback_param",
    3516     "message": "Missing parameter(s): url",
    3517     "data": {
    3518         "status": 400,
    3519         "params": [
    3520             "url"
    3521         ]
    3522     }
     3517    "version": "1.0",
     3518    "type": "video",
     3519    "provider_name": "YouTube",
     3520    "provider_url": "https://www.youtube.com",
     3521    "thumbnail_width": 480,
     3522    "width": 500,
     3523    "thumbnail_height": 360,
     3524    "html": "<iframe width=\"500\" height=\"375\" src=\"https://www.youtube.com/embed/i_cVJgIz_Cs?feature=oembed\" frameborder=\"0\" allowfullscreen></iframe>",
     3525    "author_name": "Jorge Rubira Santos",
     3526    "thumbnail_url": "https://i.ytimg.com/vi/i_cVJgIz_Cs/hqdefault.jpg",
     3527    "title": "No te olvides de poner el Where en el Delete From. (Una cancion para programadores)",
     3528    "height": 375
    35233529};
    35243530
     
    36553661mockedApiResponse.postRevisions = [
    36563662    {
    3657         "author": "2",
     3663        "author": 2,
    36583664        "date": "2017-02-14T00:00:00",
    36593665        "date_gmt": "2017-02-14T00:00:00",
     
    36863692
    36873693mockedApiResponse.revision = {
    3688     "code": "rest_post_invalid_id",
    3689     "message": "Invalid revision ID.",
    3690     "data": {
    3691         "status": 404
     3694    "author": 2,
     3695    "date": "2017-02-14T00:00:00",
     3696    "date_gmt": "2017-02-14T00:00:00",
     3697    "id": 4,
     3698    "modified": "2017-02-14T00:00:00",
     3699    "modified_gmt": "2017-02-14T00:00:00",
     3700    "parent": 3,
     3701    "slug": "3-revision-v1",
     3702    "guid": {
     3703        "rendered": "http://example.org/?p=4"
     3704    },
     3705    "title": {
     3706        "rendered": "REST API Client Fixture: Post"
     3707    },
     3708    "content": {
     3709        "rendered": "<p>Updated post content.</p>\n"
     3710    },
     3711    "excerpt": {
     3712        "rendered": "<p>REST API Client Fixture: Post</p>\n"
    36923713    }
    36933714};
     
    38053826mockedApiResponse.pageRevisions = [
    38063827    {
    3807         "author": "2",
     3828        "author": 2,
    38083829        "date": "2017-02-14T00:00:00",
    38093830        "date_gmt": "2017-02-14T00:00:00",
     
    38363857
    38373858mockedApiResponse.pageRevision = {
    3838     "code": "rest_post_invalid_id",
    3839     "message": "Invalid revision ID.",
    3840     "data": {
    3841         "status": 404
     3859    "author": 2,
     3860    "date": "2017-02-14T00:00:00",
     3861    "date_gmt": "2017-02-14T00:00:00",
     3862    "id": 6,
     3863    "modified": "2017-02-14T00:00:00",
     3864    "modified_gmt": "2017-02-14T00:00:00",
     3865    "parent": 5,
     3866    "slug": "5-revision-v1",
     3867    "guid": {
     3868        "rendered": "http://example.org/?p=6"
     3869    },
     3870    "title": {
     3871        "rendered": "REST API Client Fixture: Page"
     3872    },
     3873    "content": {
     3874        "rendered": "<p>Updated page content.</p>\n"
     3875    },
     3876    "excerpt": {
     3877        "rendered": "<p>REST API Client Fixture: Page</p>\n"
    38423878    }
    38433879};
     
    40264062
    40274063mockedApiResponse.TypeModel = {
    4028     "code": "rest_no_route",
    4029     "message": "No route was found matching the URL and request method",
    4030     "data": {
    4031         "status": 404
    4032     }
     4064    "description": "",
     4065    "hierarchical": false,
     4066    "name": "Posts",
     4067    "slug": "post",
     4068    "taxonomies": [
     4069        "category",
     4070        "post_tag"
     4071    ],
     4072    "rest_base": "posts"
    40334073};
    40344074
     
    44314471
    44324472mockedApiResponse.CommentModel = {
    4433     "code": "rest_comment_invalid_id",
    4434     "message": "Invalid comment ID.",
    4435     "data": {
    4436         "status": 404
    4437     }
     4473    "id": 2,
     4474    "post": 3,
     4475    "parent": 0,
     4476    "author": 0,
     4477    "author_name": "Internet of something or other",
     4478    "author_url": "http://lights.example.org/",
     4479    "date": "2017-02-14T00:00:00",
     4480    "date_gmt": "2017-02-14T00:00:00",
     4481    "content": {
     4482        "rendered": "<p>This is a comment</p>\n"
     4483    },
     4484    "link": "http://example.org/?p=3#comment-2",
     4485    "status": "approved",
     4486    "type": "comment",
     4487    "author_avatar_urls": {
     4488        "24": "http://2.gravatar.com/avatar/bd7c2b505bcf39cc71cfee564c614956?s=24&d=mm&r=g",
     4489        "48": "http://2.gravatar.com/avatar/bd7c2b505bcf39cc71cfee564c614956?s=48&d=mm&r=g",
     4490        "96": "http://2.gravatar.com/avatar/bd7c2b505bcf39cc71cfee564c614956?s=96&d=mm&r=g"
     4491    },
     4492    "meta": []
    44384493};
    44394494
Note: See TracChangeset for help on using the changeset viewer.