WordPress.org

Make WordPress Core

Ticket #36086: 36086.1.diff

File 36086.1.diff, 4.0 KB (added by obenland, 5 years ago)
  • tests/phpunit/tests/general/template.php

     
    1111        public $site_icon_id;
    1212        public $site_icon_url;
    1313
     14        public $custom_logo_id;
     15        public $custom_logo_url;
     16
    1417        function setUp() {
    1518                parent::setUp();
    1619
     
    1821                $this->wp_site_icon = $GLOBALS['wp_site_icon'];
    1922        }
    2023
     24        function tearDown() {
     25                $this->_remove_custom_logo();
     26
     27                parent::tearDown();
     28        }
     29
    2130        /**
    2231         * @group site_icon
    2332         */
     
    192201                $this->site_icon_id = $this->_make_attachment( $upload );
    193202                return $this->site_icon_id;
    194203        }
     204
     205        /**
     206         * @group custom_logo
     207         *
     208         * @since 4.5.0
     209         */
     210        function test_has_custom_logo() {
     211                $this->assertFalse( has_custom_logo() );
     212
     213                $this->_set_custom_logo();
     214                $this->assertTrue( has_custom_logo() );
     215
     216                $this->_remove_custom_logo();
     217                $this->assertFalse( has_custom_logo() );
     218        }
     219
     220        /**
     221         * @group custom_logo
     222         *
     223         * @since 4.5.0
     224         */
     225        function test_get_custom_logo() {
     226                $this->assertEmpty( get_custom_logo() );
     227
     228                $this->_set_custom_logo();
     229                $custom_logo = get_custom_logo();
     230                $this->assertNotEmpty( $custom_logo );
     231                $this->assertInternalType( 'string', $custom_logo );
     232
     233                $this->_remove_custom_logo();
     234                $this->assertEmpty( get_custom_logo() );
     235        }
     236
     237        /**
     238         * @group custom_logo
     239         *
     240         * @since 4.5.0
     241         */
     242        function test_the_custom_logo() {
     243                $this->expectOutputString( '' );
     244                the_custom_logo();
     245
     246                $this->_set_custom_logo();
     247                $this->expectOutputString( '<a href="http://example.org/" class="custom-logo-link" rel="home" itemprop="url"><img width="50" height="50" src="' . $this->custom_logo_url . '" class="custom-logo attachment-" alt="' . basename( $this->custom_logo_url ) . '" data-size="" itemprop="logo" /></a>' );
     248                the_custom_logo();
     249        }
     250
     251        /**
     252         * Sets a site icon in options for testing.
     253         *
     254         * @since 4.5.0
     255         */
     256        function _set_custom_logo() {
     257                if ( ! $this->custom_logo_id ) {
     258                        $this->_insert_custom_logo();
     259                }
     260
     261                set_theme_mod( 'custom_logo', $this->custom_logo_id );
     262        }
     263
     264        /**
     265         * Removes the site icon from options.
     266         *
     267         * @since 4.5.0
     268         */
     269        function _remove_custom_logo() {
     270                remove_theme_mod( 'custom_logo' );
     271        }
     272
     273        /**
     274         * Inserts an attachment for testing custom logos.
     275         *
     276         * @since 4.5.0
     277         */
     278        function _insert_custom_logo() {
     279                $filename = DIR_TESTDATA . '/images/test-image.jpg';
     280                $contents = file_get_contents( $filename );
     281                $upload   = wp_upload_bits( basename( $filename ), null, $contents );
     282
     283                // Save the data.
     284                $this->custom_logo_url = $upload['url'];
     285                $this->custom_logo_id  = $this->_make_attachment( $upload );
     286                return $this->custom_logo_id;
     287        }
    195288}
  • tests/phpunit/tests/image/custom_logo.php

     
     1<?php
     2
     3/**
     4 * Tests for the WP_Custom_logo class.
     5 *
     6 * @group custom_logo
     7 */
     8class Tests_WP_Custom_Logo extends WP_UnitTestCase {
     9        public $attachment_id = 0;
     10
     11        function setUp() {
     12                parent::setUp();
     13
     14                require_once ABSPATH . 'wp-admin/includes/class-wp-custom-logo.php';
     15        }
     16
     17        function tearDown() {
     18                $this->custom_logo = null;
     19                $this->remove_added_uploads();
     20                parent::tearDown();
     21        }
     22
     23        function test_delete_attachment_data() {
     24                $attachment_id = $this->_insert_attachment();
     25                set_theme_mod( 'custom_logo', $attachment_id );
     26
     27                wp_delete_attachment( $attachment_id, true );
     28
     29                $this->assertFalse( get_theme_mod( 'custom_logo' ) );
     30        }
     31
     32        function _insert_attachment() {
     33                if ( $this->attachment_id ) {
     34                        return $this->attachment_id;
     35                }
     36
     37                $filename = DIR_TESTDATA . '/images/test-image.jpg';
     38                $contents = file_get_contents( $filename );
     39
     40                $upload = wp_upload_bits( basename( $filename ), null, $contents );
     41
     42                $this->attachment_id = $this->_make_attachment( $upload );
     43                return $this->attachment_id;
     44        }
     45}