Ticket #34597: 34597.1.diff
| File 34597.1.diff, 3.9 KB (added by , 10 years ago) |
|---|
-
src/wp-includes/class-wp-customize-manager.php
diff --git src/wp-includes/class-wp-customize-manager.php src/wp-includes/class-wp-customize-manager.php index e95e115..daa15e6 100644
final class WP_Customize_Manager { 1049 1049 if ( $id instanceof WP_Customize_Setting ) { 1050 1050 $setting = $id; 1051 1051 } else { 1052 $setting = new WP_Customize_Setting( $this, $id, $args ); 1052 $class = 'WP_Customize_Setting'; 1053 1054 /** This filter is documented in wp-includes/class-wp-customize-manager.php */ 1055 $args = apply_filters( 'customize_dynamic_setting_args', $args, $id ); 1056 1057 /** This filter is documented in wp-includes/class-wp-customize-manager.php */ 1058 $class = apply_filters( 'customize_dynamic_setting_class', $class, $id, $args ); 1059 1060 $setting = new $class( $this, $id, $args ); 1053 1061 } 1054 1062 1055 1063 $this->settings[ $setting->id ] = $setting; -
tests/phpunit/tests/customize/manager.php
diff --git tests/phpunit/tests/customize/manager.php tests/phpunit/tests/customize/manager.php index 272166b..929df0a 100644
class Tests_WP_Customize_Manager extends WP_UnitTestCase { 245 245 * @return array 246 246 */ 247 247 function filter_customize_dynamic_setting_args_for_test_dynamic_settings( $setting_args, $setting_id ) { 248 $this->assertEquals( false, $setting_args, 'Expected $setting_args to be false by default.' );249 248 $this->assertInternalType( 'string', $setting_id ); 250 249 if ( in_array( $setting_id, array( 'foo', 'bar' ) ) ) { 251 250 $setting_args = array( 'default' => "dynamic_{$setting_id}_default" ); … … class Tests_WP_Customize_Manager extends WP_UnitTestCase { 542 541 } 543 542 544 543 /** 544 * @ticket 34597 545 */ 546 function test_add_setting_honoring_dynamic() { 547 $manager = new WP_Customize_Manager(); 548 549 $setting_id = 'dynamic'; 550 $setting = $manager->add_setting( $setting_id ); 551 $this->assertEquals( 'WP_Customize_Setting', get_class( $setting ) ); 552 $this->assertObjectNotHasAttribute( 'custom', $setting ); 553 $manager->remove_setting( $setting_id ); 554 555 add_filter( 'customize_dynamic_setting_class', array( $this, 'return_dynamic_customize_setting_class' ), 10, 3 ); 556 add_filter( 'customize_dynamic_setting_args', array( $this, 'return_dynamic_customize_setting_args' ), 10, 2 ); 557 $setting = $manager->add_setting( $setting_id ); 558 $this->assertEquals( 'Test_Dynamic_Customize_Setting', get_class( $setting ) ); 559 $this->assertObjectHasAttribute( 'custom', $setting ); 560 $this->assertEquals( 'foo', $setting->custom ); 561 } 562 563 /** 564 * Return 'Test_Dynamic_Customize_Setting' in 'customize_dynamic_setting_class. 565 * 566 * @param string $class Setting class. 567 * @param array $args Setting args. 568 * @param string $id Setting ID. 569 * @return string Setting class. 570 */ 571 function return_dynamic_customize_setting_class( $class, $id, $args ) { 572 unset( $args ); 573 if ( 0 === strpos( $id, 'dynamic' ) ) { 574 $class = 'Test_Dynamic_Customize_Setting'; 575 } 576 return $class; 577 } 578 579 /** 580 * Return 'Test_Dynamic_Customize_Setting' in 'customize_dynamic_setting_class. 581 * 582 * @param array $args Setting args. 583 * @param string $id Setting ID. 584 * @return string Setting args. 585 */ 586 function return_dynamic_customize_setting_args( $args, $id ) { 587 if ( 0 === strpos( $id, 'dynamic' ) ) { 588 $args['custom'] = 'foo'; 589 } 590 return $args; 591 } 592 593 /** 545 594 * @ticket 34596 546 595 */ 547 596 function test_add_panel_return_instance() { … … class Tests_WP_Customize_Manager extends WP_UnitTestCase { 602 651 $this->assertEquals( $control_id, $result_control->id ); 603 652 } 604 653 } 654 655 require_once ABSPATH . WPINC . '/class-wp-customize-setting.php'; 656 657 /** 658 * Class Test_Dynamic_Customize_Setting 659 * 660 * @see Tests_WP_Customize_Manager::test_add_setting_honoring_dynamic() 661 */ 662 class Test_Dynamic_Customize_Setting extends WP_Customize_Setting { 663 public $type = 'dynamic'; 664 public $custom; 665 }