From 8a4659608ba43363b4bd63fd76e99635c55141c8 Mon Sep 17 00:00:00 2001 From: madhusudhand Date: Thu, 23 May 2024 15:58:54 +0200 Subject: [PATCH] add unit tests for shadow support --- tests/phpunit/tests/block-supports/shadow.php | 103 +++++++++++------- 1 file changed, 62 insertions(+), 41 deletions(-) diff --git a/tests/phpunit/tests/block-supports/shadow.php b/tests/phpunit/tests/block-supports/shadow.php index c6ed4afdc8605..27df4a572007a 100644 --- a/tests/phpunit/tests/block-supports/shadow.php +++ b/tests/phpunit/tests/block-supports/shadow.php @@ -22,10 +22,15 @@ public function tear_down() { } /** - * @ticket 58590 + * Registers a new block for testing shadow support. + * + * @param string $block_name Name for the test block. + * @param array $supports Array defining block support configuration. + * + * @return WP_Block_Type The block type for the newly registered test block. */ - public function test_shadow_style_is_applied() { - $this->test_block_name = 'test/shadow-style-is-applied'; + private function register_shadow_block_with_support( $block_name, $supports = array() ) { + $this->test_block_name = $block_name; register_block_type( $this->test_block_name, array( @@ -35,55 +40,71 @@ public function test_shadow_style_is_applied() { 'type' => 'object', ), ), - 'supports' => array( - 'shadow' => true, - ), + 'supports' => $supports, ) ); - $registry = WP_Block_Type_Registry::get_instance(); - $block_type = $registry->get_registered( $this->test_block_name ); - $block_atts = array( - 'style' => array( - 'shadow' => '60px -16px teal', - ), - ); + $registry = WP_Block_Type_Registry::get_instance(); - $actual = wp_apply_shadow_support( $block_type, $block_atts ); - $expected = array( - 'style' => 'box-shadow:60px -16px teal;', + return $registry->get_registered( $this->test_block_name ); + } + + /** + * Tests the generation of shadow block support styles. + * + * @dataProvider data_generate_shadow_fixtures + * + * @param boolean|array $support Shadow block support configuration. + * @param string $value Shadow style value for style attribute object. + * @param array $expected Expected shadow block support styles. + */ + public function test_gutenberg_apply_shadow_support( $support, $value, $expected ) { + $block_type = self::register_shadow_block_with_support( + 'test/shadow-block', + array( 'shadow' => $support ) ); + $block_attrs = array( 'style' => array( 'shadow' => $value ) ); + $actual = gutenberg_apply_shadow_support( $block_type, $block_attrs ); $this->assertSame( $expected, $actual ); } /** - * @ticket 58590 + * Data provider. + * + * @return array */ - public function test_shadow_without_block_supports() { - $this->test_block_name = 'test/shadow-with-skipped-serialization-block-supports'; - register_block_type( - $this->test_block_name, - array( - 'api_version' => 2, - 'attributes' => array( - 'style' => array( - 'type' => 'object', - ), - ), - 'supports' => array(), - ) - ); - $registry = WP_Block_Type_Registry::get_instance(); - $block_type = $registry->get_registered( $this->test_block_name ); - $block_atts = array( - 'style' => array( - 'shadow' => '60px -16px teal', + public function data_generate_shadow_fixtures() { + return array( + 'with no styles' => array( + 'support' => true, + 'value' => '', + 'expected' => array(), + ), + 'without support' => array( + 'support' => false, + 'value' => '1px 1px 1px #000', + 'expected' => array(), + ), + 'with single shadow' => array( + 'support' => true, + 'value' => '1px 1px 1px #000', + 'expected' => array( 'style' => 'box-shadow:1px 1px 1px #000;' ), + ), + 'with comma separated shadows' => array( + 'support' => true, + 'value' => '1px 1px 1px #000, 2px 2px 2px #fff', + 'expected' => array( 'style' => 'box-shadow:1px 1px 1px #000, 2px 2px 2px #fff;' ), + ), + 'with preset shadow' => array( + 'support' => true, + 'value' => 'var:preset|shadow|natural', + 'expected' => array( 'style' => 'box-shadow:var(--wp--preset--shadow--natural);' ), + ), + 'with serialization skipped' => array( + 'support' => array( '__experimentalSkipSerialization' => true ), + 'value' => '1px 1px 1px #000', + 'expected' => array(), ), ); - - $actual = wp_apply_spacing_support( $block_type, $block_atts ); - $expected = array(); - - $this->assertSame( $expected, $actual ); } }