WordPress.org

Make WordPress Core


Ignore:
Timestamp:
10/23/2018 06:52:03 AM (14 months ago)
Author:
pento
Message:

Blocks: Add the reusable block post type, wp_block.

See #45098.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/5.0/tests/phpunit/tests/user/capabilities.php

    r43156 r43804  
    1717    );
    1818    protected static $super_admin = null;
     19
     20    protected static $block_id;
    1921
    2022    public static function wpSetUpBeforeClass( $factory ) {
     
    2830        self::$super_admin = $factory->user->create_and_get( array( 'role' => 'contributor' ) );
    2931        grant_super_admin( self::$super_admin->ID );
     32
     33        self::$block_id = $factory->post->create(
     34            array(
     35                'post_author'  => self::$users['administrator']->ID,
     36                'post_type'    => 'wp_block',
     37                'post_status'  => 'publish',
     38                'post_title'   => 'Test Block',
     39                'post_content' => '<!-- wp:core/paragraph --><p>Hello world!</p><!-- /wp:core/paragraph -->',
     40            )
     41        );
    3042    }
    3143
     
    3648
    3749    }
     50
     51    public static function wpTearDownAfterClass() {
     52        wp_delete_post( self::$block_id, true );
     53    }
     54
    3855
    3956    function _flush_roles() {
     
    20172034        $this->assertSame( 333, $roles->get_site_id() );
    20182035    }
     2036
     2037    /**
     2038     * @dataProvider data_block_caps
     2039     */
     2040    function test_block_caps( $role, $cap, $use_post, $expected ) {
     2041        if ( $use_post ) {
     2042            $this->assertEquals( $expected, self::$users[ $role ]->has_cap( $cap, self::$block_id ) );
     2043        } else {
     2044            $this->assertEquals( $expected, self::$users[ $role ]->has_cap( $cap ) );
     2045        }
     2046    }
     2047
     2048    function data_block_caps() {
     2049        $post_caps = array(
     2050            'edit_block',
     2051            'read_block',
     2052            'delete_block',
     2053        );
     2054
     2055        $all_caps = array(
     2056            'edit_block',
     2057            'read_block',
     2058            'delete_block',
     2059            'edit_blocks',
     2060            'edit_others_blocks',
     2061            'publish_blocks',
     2062            'read_private_blocks',
     2063            'delete_blocks',
     2064            'delete_private_blocks',
     2065            'delete_published_blocks',
     2066            'delete_others_blocks',
     2067            'edit_private_blocks',
     2068            'edit_published_blocks',
     2069        );
     2070
     2071        $roles = array(
     2072            'administrator' => $all_caps,
     2073            'editor' => $all_caps,
     2074            'author' => array(
     2075                'read_block',
     2076                'edit_blocks',
     2077                'publish_blocks',
     2078                'delete_blocks',
     2079                'delete_published_blocks',
     2080                'edit_published_blocks',
     2081            ),
     2082            'contributor' => array(
     2083                'read_block',
     2084                'edit_blocks',
     2085                'delete_blocks',
     2086            ),
     2087            'subscriber' => array(),
     2088        );
     2089
     2090        $data = array();
     2091
     2092        foreach( $roles as $role => $caps ) {
     2093            foreach ( $caps as $cap ) {
     2094                $use_post = in_array( $cap, $post_caps, true );
     2095                $data[] = array( $role, $cap, $use_post, true );
     2096            }
     2097
     2098            foreach ( $all_caps as $cap ) {
     2099                if ( ! in_array( $cap, $caps, true ) ) {
     2100                    $use_post = in_array( $cap, $post_caps, true );
     2101                    $data[] = array( $role, $cap, $use_post, false );
     2102                }
     2103            }
     2104        }
     2105
     2106        return $data;
     2107    }
    20192108}
Note: See TracChangeset for help on using the changeset viewer.