If the setting already has a pre-existing value and there is no incoming
post value for the setting, then this method will short-circuit since
there is no change to preview.
/** * Test specific fix for setting's default value not applying on preview window * * @ticket 30988 */ function test_non_posted_setting_applying_default_value_in_preview() { $type = 'option'; $name = 'unset_option_without_post_value'; $default = "default_value_{$name}"; $setting = new WP_Customize_Setting( $this->manager, $name, compact( 'type', 'default' ) ); $this->assertEquals( $this->undefined, get_option( $name, $this->undefined ) ); $this->assertEquals( $default, $setting->value() ); $setting->preview(); $this->assertEquals( $default, get_option( $name, $this->undefined ), sprintf( 'Expected get_option(%s) to return setting default: %s.', $name, $default ) ); $this->assertEquals( $default, $setting->value() ); }
/** * Ensure that WP_Customize_Setting::value() can return a previewed value for aggregated multidimensionals. * * @ticket 37294 */ public function test_multidimensional_value_when_previewed() { WP_Customize_Setting::reset_aggregated_multidimensionals(); $initial_value = 456; set_theme_mod('nav_menu_locations', array('primary' => $initial_value)); $setting_id = 'nav_menu_locations[primary]'; $setting = new WP_Customize_Setting($this->manager, $setting_id); $this->assertEquals($initial_value, $setting->value()); $override_value = -123456; $this->manager->set_post_value($setting_id, $override_value); $setting->preview(); $this->assertEquals($override_value, $setting->value()); }
/** * Ensure that previewing a setting is disabled when the current blog is switched. * * @ticket 31428 * @group multisite */ function test_previewing_with_switch_to_blog() { if (!is_multisite()) { $this->markTestSkipped('Cannot test WP_Customize_Setting::is_current_blog_previewed() with switch_to_blog() if not on multisite.'); } $type = 'option'; $name = 'blogdescription'; $post_value = rand_str(); $this->manager->set_post_value($name, $post_value); $setting = new WP_Customize_Setting($this->manager, $name, compact('type')); $this->assertFalse($setting->is_current_blog_previewed()); $this->assertTrue($setting->preview()); $this->assertTrue($setting->is_current_blog_previewed()); $blog_id = self::factory()->blog->create(); switch_to_blog($blog_id); $this->assertFalse($setting->is_current_blog_previewed()); $this->assertNotEquals($post_value, $setting->value()); $this->assertNotEquals($post_value, get_option($name)); restore_current_blog(); }