diff --git a/tests/phpunit/tests/theme/customHeader.php b/tests/phpunit/tests/theme/customHeader.php
index 875c8ba79d..98b2c84e02 100644
--- a/tests/phpunit/tests/theme/customHeader.php
+++ b/tests/phpunit/tests/theme/customHeader.php
@@ -6,17 +6,224 @@ class Tests_Theme_Custom_Header extends WP_UnitTestCase {
static $post;
+ protected static $header_video_id;
+
public static function wpSetUpBeforeClass( $factory ) {
self::$post = self::factory()->post->create( array(
'post_status' => 'publish',
) );
+
+ $file = DIR_TESTDATA . '/uploads/small-video.mp4';
+ self::$header_video_id = $factory->attachment->create_upload_object( $file );
+ }
+
+ function setUp() {
+ parent::setUp();
+
+ require_once( ABSPATH . WPINC . '/class-wp-customize-manager.php' );
+ $GLOBALS['wp_customize'] = new WP_Customize_Manager();
+ $this->customize_manager = $GLOBALS['wp_customize'];
+
+ wp_dequeue_script( 'wp-custom-header' );
}
function tearDown() {
+ $this->customize_manager = null;
+ unset( $GLOBALS['wp_customize'] );
+
remove_theme_support( 'custom-header' );
+ remove_theme_mod( 'header_image' );
+ remove_theme_mod( 'header_image_data' );
+ remove_theme_mod( 'header_video' );
+ remove_theme_mod( 'external_header_video' );
+
parent::tearDown();
}
+ function test_add_and_remove_theme_support() {
+ $this->_add_theme_support();
+ $this->assertTrue( current_theme_supports( 'custom-header' ) );
+ remove_theme_support( 'custom-header' );
+ $this->assertFalse( current_theme_supports( 'custom-header' ) );
+ }
+
+ function test_get_header_image_without_registered_default() {
+ $this->_add_theme_support();
+ $image = get_header_image();
+ $this->assertFalse( has_header_image() );
+ $this->assertEmpty( $image );
+ }
+
+ function test_get_header_image_with_registered_default() {
+ $default = 'http://localhost/default-header.jpg';
+ $this->_add_theme_support( array( 'default-image' => $default ) );
+
+ $image = get_header_image();
+ $this->assertTrue( has_header_image() );
+ $this->assertEquals( $default, $image );
+ }
+
+ function test_get_header_image_from_theme_mod() {
+ $default = 'http://localhost/default-header.jpg';
+ $custom = 'http://localhost/custom-header.jpg';
+ $this->_add_theme_support( array( 'default-image' => $default ) );
+
+ set_theme_mod( 'header_image', $custom );
+ $image = get_header_image();
+ $this->assertEquals( $custom, $image );
+ $this->assertTrue( has_header_image() );
+
+ set_theme_mod( 'header_image', 'remove-header' );
+ $image = get_header_image();
+ $this->assertFalse( has_header_image() );
+ $this->assertFalse( $image );
+ }
+
+ function test_get_header_image_tag_without_registered_default_image() {
+ $this->_add_theme_support();
+ $html = get_header_image_tag();
+ $this->assertEmpty( $html );
+ }
+
+ function test_get_header_image_tag_with_registered_default_image() {
+ $default = 'http://localhost/default-header.jpg';
+ $this->_add_theme_support( array( 'default-image' => $default ) );
+
+ $html = get_header_image_tag();
+ $this->assertStringStartsWith( 'assertContains( sprintf( 'src="%s"', $default ), $html );
+ }
+
+ /**
+ * @ticket 38633
+ */
+ function test_get_header_image_tag_with_registered_default_image_and_remove_header_theme_mod() {
+ $default = 'http://localhost/default-header.jpg';
+ $this->_add_theme_support( array( 'default-image' => $default ) );
+
+ set_theme_mod( 'header_image', 'remove-header' );
+ $html = get_header_image_tag();
+ $this->assertEmpty( $html );
+ }
+
+ function test_get_header_image_tag_with_registered_default_image_and_custom_theme_mod() {
+ $default = 'http://localhost/default-header.jpg';
+ $custom = 'http://localhost/custom-header.jpg';
+ $this->_add_theme_support( array( 'default-image' => $default ) );
+
+ set_theme_mod( 'header_image', $custom );
+ $html = get_header_image_tag();
+ $this->assertStringStartsWith( '
assertContains( sprintf( 'src="%s"', $custom ), $html );
+ }
+
+ function test_get_custom_header_markup_without_registered_default_image() {
+ $this->_add_theme_support();
+
+ $html = get_custom_header_markup();
+ $this->assertFalse( has_custom_header() );
+ $this->assertEmpty( $html );
+
+ // The container should always be returned in the Customizer preview.
+ $this->_set_customize_previewing( true );
+ $html = get_custom_header_markup();
+ $this->assertEquals( '