WordPress.org

Make WordPress Core

Changeset 43646


Ignore:
Timestamp:
09/18/2018 03:29:41 AM (13 months ago)
Author:
SergeyBiryukov
Message:

Tests: Improve coverage for REST API term meta registration.

Introduce tests to validate that register_meta and register_term_meta work as expected in WP_REST_Terms_Controller.

Props timmydcrawford.
Merges [43567] to the 4.9 branch.
See #39122.

Location:
branches/4.9
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/4.9

  • branches/4.9/tests/phpunit/tests/rest-api/rest-categories-controller.php

    r43445 r43646  
    3737        self::delete_user( self::$administrator );
    3838        self::delete_user( self::$subscriber );
     39    }
     40
     41    public function setUp() {
     42        parent::setUp();
     43
     44        register_meta( 'term', 'test_single', array(
     45            'show_in_rest' => true,
     46            'single' => true,
     47            'type' => 'string',
     48        ));
     49        register_meta( 'term', 'test_multi', array(
     50            'show_in_rest' => true,
     51            'single' => false,
     52            'type' => 'string',
     53        ));
     54        register_term_meta( 'category', 'test_cat_single', array(
     55            'show_in_rest' => true,
     56            'single' => true,
     57            'type' => 'string',
     58        ));
     59        register_term_meta( 'category', 'test_cat_multi', array(
     60            'show_in_rest' => true,
     61            'single' => false,
     62            'type' => 'string',
     63        ));
     64        register_term_meta( 'post_tag', 'test_tag_meta', array(
     65            'show_in_rest' => true,
     66            'single' => true,
     67            'type' => 'string',
     68        ));
    3969    }
    4070
     
    576606    }
    577607
     608    public function test_get_item_meta() {
     609        $request  = new WP_REST_Request( 'GET', '/wp/v2/categories/1' );
     610        $response = rest_get_server()->dispatch( $request );
     611        $data     = $response->get_data();
     612        $this->assertArrayHasKey( 'meta', $data );
     613
     614        $meta = (array) $data['meta'];
     615        $this->assertArrayHasKey( 'test_single', $meta );
     616        $this->assertEquals( $meta['test_single'], '' );
     617        $this->assertArrayHasKey( 'test_multi', $meta );
     618        $this->assertEquals( $meta['test_multi'], array() );
     619        $this->assertArrayHasKey( 'test_cat_single', $meta );
     620        $this->assertEquals( $meta['test_cat_single'], '' );
     621        $this->assertArrayHasKey( 'test_cat_multi', $meta );
     622        $this->assertEquals( $meta['test_cat_multi'], array() );
     623    }
     624
     625    public function test_get_item_meta_registered_for_different_taxonomy() {
     626        $request  = new WP_REST_Request( 'GET', '/wp/v2/categories/1' );
     627        $response = rest_get_server()->dispatch( $request );
     628        $data = $response->get_data();
     629        $this->assertArrayHasKey( 'meta', $data );
     630        $this->assertArrayHasKey( 'meta', $data );
     631
     632        $meta = (array) $data['meta'];
     633        $this->assertEquals( false, isset( $meta['test_tag_meta'] ) );
     634    }
     635
    578636    public function test_get_term_invalid_taxonomy() {
    579637        $request = new WP_REST_Request( 'GET', '/wp/v2/invalid-taxonomy/1' );
     
    714772        $request->set_param( 'description', 'New Description' );
    715773        $request->set_param( 'slug', 'new-slug' );
     774        $request->set_param( 'meta', array(
     775            'test_single' => 'just meta',
     776            'test_cat_single' => 'category-specific meta',
     777            'test_tag_meta' => 'tag-specific meta',
     778        ) );
    716779        $response = $this->server->dispatch( $request );
    717780        $this->assertEquals( 200, $response->get_status() );
     
    720783        $this->assertEquals( 'New Description', $data['description'] );
    721784        $this->assertEquals( 'new-slug', $data['slug'] );
     785        $this->assertEquals( 'just meta', $data['meta']['test_single'] );
     786        $this->assertEquals( 'category-specific meta', $data['meta']['test_cat_single'] );
     787        $this->assertFalse( isset( $data['meta']['test_tag_meta'] ) );
    722788    }
    723789
  • branches/4.9/tests/phpunit/tests/rest-api/rest-tags-controller.php

    r43637 r43646  
    5656    }
    5757
     58    public function setUp() {
     59        parent::setUp();
     60
     61        register_meta( 'term', 'test_single', array(
     62            'show_in_rest' => true,
     63            'single' => true,
     64            'type' => 'string',
     65        ));
     66        register_meta( 'term', 'test_multi', array(
     67            'show_in_rest' => true,
     68            'single' => false,
     69            'type' => 'string',
     70        ));
     71        register_term_meta( 'post_tag', 'test_tag_single', array(
     72            'show_in_rest' => true,
     73            'single' => true,
     74            'type' => 'string',
     75        ));
     76        register_term_meta( 'post_tag', 'test_tag_multi', array(
     77            'show_in_rest' => true,
     78            'single' => false,
     79            'type' => 'string',
     80        ));
     81        register_term_meta( 'category', 'test_cat_meta', array(
     82            'show_in_rest' => true,
     83            'single' => true,
     84            'type' => 'string',
     85        ));
     86    }
     87
    5888    public function test_register_routes() {
    5989        $routes = $this->server->get_routes();
     
    528558    }
    529559
     560    public function test_get_item_meta() {
     561        $id       = $this->factory->tag->create();
     562        $request  = new WP_REST_Request( 'GET', '/wp/v2/tags/' . $id );
     563        $response = rest_get_server()->dispatch( $request );
     564        $data = $response->get_data();
     565        $this->assertArrayHasKey( 'meta', $data );
     566
     567        $meta = (array) $data['meta'];
     568        $this->assertArrayHasKey( 'test_single', $meta );
     569        $this->assertEquals( $meta['test_single'], '' );
     570        $this->assertArrayHasKey( 'test_multi', $meta );
     571        $this->assertEquals( $meta['test_multi'], array() );
     572        $this->assertArrayHasKey( 'test_tag_single', $meta );
     573        $this->assertEquals( $meta['test_tag_single'], '' );
     574        $this->assertArrayHasKey( 'test_tag_multi', $meta );
     575        $this->assertEquals( $meta['test_tag_multi'], array() );
     576    }
     577
     578    public function test_get_item_meta_registered_for_different_taxonomy() {
     579        $id       = $this->factory->tag->create();
     580        $request  = new WP_REST_Request( 'GET', '/wp/v2/tags/' . $id );
     581        $response = rest_get_server()->dispatch( $request );
     582        $data = $response->get_data();
     583        $this->assertArrayHasKey( 'meta', $data );
     584
     585        $meta = (array) $data['meta'];
     586        $this->assertEquals( false, isset( $meta['test_cat_meta'] ) );
     587    }
     588
    530589    public function test_get_term_invalid_term() {
    531590        $request = new WP_REST_Request( 'GET', '/wp/v2/tags/' . REST_TESTS_IMPOSSIBLY_HIGH_NUMBER );
     
    660719        $request->set_param( 'description', 'New Description' );
    661720        $request->set_param( 'slug', 'new-slug' );
     721        $request->set_param( 'meta', array(
     722            'test_single' => 'just meta',
     723            'test_tag_single' => 'tag-specific meta',
     724            'test_cat_meta' => 'category-specific meta',
     725        ) );
    662726        $response = $this->server->dispatch( $request );
    663727        $this->assertEquals( 200, $response->get_status() );
     
    666730        $this->assertEquals( 'New Description', $data['description'] );
    667731        $this->assertEquals( 'new-slug', $data['slug'] );
     732        $this->assertEquals( 'just meta', $data['meta']['test_single'] );
     733        $this->assertEquals( 'tag-specific meta', $data['meta']['test_tag_single'] );
     734        $this->assertFalse( isset( $data['meta']['test_cat_meta'] ) );
    668735    }
    669736
  • branches/4.9/tests/qunit/fixtures/wp-api-generated.js

    r43442 r43646  
    42794279        "parent": 0,
    42804280        "meta": {
    4281             "meta_key": ""
     4281            "test_single": "",
     4282            "test_multi": [],
     4283            "meta_key": "",
     4284            "test_cat_single": "",
     4285            "test_cat_multi": []
    42824286        },
    42834287        "_links": {
     
    43234327    "parent": 0,
    43244328    "meta": {
    4325         "meta_key": ""
     4329        "test_single": "",
     4330        "test_multi": [],
     4331        "meta_key": "",
     4332        "test_cat_single": "",
     4333        "test_cat_multi": []
    43264334    }
    43274335};
     
    43374345        "taxonomy": "post_tag",
    43384346        "meta": {
    4339             "meta_key": "meta_value"
     4347            "test_single": "",
     4348            "test_multi": [],
     4349            "meta_key": "meta_value",
     4350            "test_tag_meta": ""
    43404351        },
    43414352        "_links": {
     
    43804391    "taxonomy": "post_tag",
    43814392    "meta": {
    4382         "meta_key": "meta_value"
     4393        "test_single": "",
     4394        "test_multi": [],
     4395        "meta_key": "meta_value",
     4396        "test_tag_meta": ""
    43834397    }
    43844398};
Note: See TracChangeset for help on using the changeset viewer.