Make WordPress Core


Ignore:
Timestamp:
04/05/2026 11:13:50 PM (5 months ago)
Author:
SergeyBiryukov
Message:

Tests: Move wp_dropdown_languages() tests to their own file.

This aims to make the tests more discoverable and easier to expand.

Follow-up to [36631], [39169], [43359], [44514].

See #64225.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/l10n.php

    r60253 r62208  
    128128
    129129        /**
    130          * @ticket 35294
    131          *
    132          * @covers ::wp_dropdown_languages
    133          */
    134         public function test_wp_dropdown_languages() {
    135                 $args   = array(
    136                         'id'           => 'foo',
    137                         'name'         => 'bar',
    138                         'languages'    => array( 'de_DE' ),
    139                         'translations' => $this->wp_dropdown_languages_filter(),
    140                         'selected'     => 'de_DE',
    141                         'echo'         => false,
    142                 );
    143                 $actual = wp_dropdown_languages( $args );
    144 
    145                 $this->assertStringContainsString( 'id="foo"', $actual );
    146                 $this->assertStringContainsString( 'name="bar"', $actual );
    147                 $this->assertStringContainsString( '<option value="" lang="en" data-installed="1">English (United States)</option>', $actual );
    148                 $this->assertStringContainsString( '<option value="de_DE" lang="de" selected=\'selected\' data-installed="1">Deutsch</option>', $actual );
    149                 $this->assertStringContainsString( '<option value="it_IT" lang="it">Italiano</option>', $actual );
    150                 $this->assertStringContainsString( '<option value="ja_JP" lang="ja">日本語</option>', $actual );
    151         }
    152 
    153         /**
    154          * @ticket 38632
    155          *
    156          * @covers ::wp_dropdown_languages
    157          */
    158         public function test_wp_dropdown_languages_site_default() {
    159                 $args   = array(
    160                         'id'                       => 'foo',
    161                         'name'                     => 'bar',
    162                         'languages'                => array( 'de_DE' ),
    163                         'translations'             => $this->wp_dropdown_languages_filter(),
    164                         'selected'                 => 'de_DE',
    165                         'echo'                     => false,
    166                         'show_option_site_default' => true,
    167                 );
    168                 $actual = wp_dropdown_languages( $args );
    169 
    170                 $this->assertStringContainsString( 'id="foo"', $actual );
    171                 $this->assertStringContainsString( 'name="bar"', $actual );
    172                 $this->assertStringContainsString( '<option value="site-default" data-installed="1">Site Default</option>', $actual );
    173                 $this->assertStringContainsString( '<option value="" lang="en" data-installed="1">English (United States)</option>', $actual );
    174                 $this->assertStringContainsString( '<option value="de_DE" lang="de" selected=\'selected\' data-installed="1">Deutsch</option>', $actual );
    175                 $this->assertStringContainsString( '<option value="it_IT" lang="it">Italiano</option>', $actual );
    176                 $this->assertStringContainsString( '<option value="ja_JP" lang="ja">日本語</option>', $actual );
    177         }
    178 
    179         /**
    180          * @ticket 44494
    181          *
    182          * @covers ::wp_dropdown_languages
    183          */
    184         public function test_wp_dropdown_languages_exclude_en_us() {
    185                 $args   = array(
    186                         'id'                => 'foo',
    187                         'name'              => 'bar',
    188                         'languages'         => array( 'de_DE' ),
    189                         'translations'      => $this->wp_dropdown_languages_filter(),
    190                         'selected'          => 'de_DE',
    191                         'echo'              => false,
    192                         'show_option_en_us' => false,
    193                 );
    194                 $actual = wp_dropdown_languages( $args );
    195 
    196                 $this->assertStringNotContainsString( '<option value="" lang="en" data-installed="1">English (United States)</option>', $actual );
    197         }
    198 
    199         /**
    200          * @ticket 38632
    201          *
    202          * @covers ::wp_dropdown_languages
    203          */
    204         public function test_wp_dropdown_languages_en_US_selected() {
    205                 $args   = array(
    206                         'id'           => 'foo',
    207                         'name'         => 'bar',
    208                         'languages'    => array( 'de_DE' ),
    209                         'translations' => $this->wp_dropdown_languages_filter(),
    210                         'selected'     => 'en_US',
    211                         'echo'         => false,
    212                 );
    213                 $actual = wp_dropdown_languages( $args );
    214 
    215                 $this->assertStringContainsString( 'id="foo"', $actual );
    216                 $this->assertStringContainsString( 'name="bar"', $actual );
    217                 $this->assertStringContainsString( '<option value="" lang="en" data-installed="1" selected=\'selected\'>English (United States)</option>', $actual );
    218                 $this->assertStringContainsString( '<option value="de_DE" lang="de" data-installed="1">Deutsch</option>', $actual );
    219                 $this->assertStringContainsString( '<option value="it_IT" lang="it">Italiano</option>', $actual );
    220                 $this->assertStringContainsString( '<option value="ja_JP" lang="ja">日本語</option>', $actual );
    221         }
    222 
    223         /**
    224          * Add site default language to ja_JP in dropdown
    225          *
    226          * @covers ::wp_dropdown_languages
    227          */
    228         public function test_wp_dropdown_languages_site_default_ja_JP() {
    229                 $args   = array(
    230                         'id'                       => 'foo',
    231                         'name'                     => 'bar',
    232                         'languages'                => array( 'ja_JP' ),
    233                         'translations'             => $this->wp_dropdown_languages_filter(),
    234                         'selected'                 => 'ja_JP',
    235                         'echo'                     => false,
    236                         'show_option_site_default' => true,
    237                 );
    238                 $actual = wp_dropdown_languages( $args );
    239 
    240                 $this->assertStringContainsString( 'id="foo"', $actual );
    241                 $this->assertStringContainsString( 'name="bar"', $actual );
    242                 $this->assertStringContainsString( '<option value="site-default" data-installed="1">Site Default</option>', $actual );
    243                 $this->assertStringContainsString( '<option value="" lang="en" data-installed="1">English (United States)</option>', $actual );
    244                 $this->assertStringContainsString( '<option value="de_DE" lang="de">Deutsch</option>', $actual );
    245                 $this->assertStringContainsString( '<option value="it_IT" lang="it">Italiano</option>', $actual );
    246                 $this->assertStringContainsString( '<option value="ja_JP" lang="ja" selected=\'selected\' data-installed="1">日本語</option>', $actual );
    247         }
    248 
    249         /**
    250          * Select dropdown language from de_DE to ja_JP
    251          *
    252          * @covers ::wp_dropdown_languages
    253          */
    254         public function test_wp_dropdown_languages_ja_JP_selected() {
    255                 $args   = array(
    256                         'id'           => 'foo',
    257                         'name'         => 'bar',
    258                         'languages'    => array( 'de_DE' ),
    259                         'translations' => $this->wp_dropdown_languages_filter(),
    260                         'selected'     => 'ja_JP',
    261                         'echo'         => false,
    262                 );
    263                 $actual = wp_dropdown_languages( $args );
    264 
    265                 $this->assertStringContainsString( 'id="foo"', $actual );
    266                 $this->assertStringContainsString( 'name="bar"', $actual );
    267                 $this->assertStringContainsString( '<option value="" lang="en" data-installed="1">English (United States)</option>', $actual );
    268                 $this->assertStringContainsString( '<option value="de_DE" lang="de" data-installed="1">Deutsch</option>', $actual );
    269                 $this->assertStringContainsString( '<option value="it_IT" lang="it">Italiano</option>', $actual );
    270                 $this->assertStringContainsString( '<option value="ja_JP" lang="ja" selected=\'selected\'>日本語</option>', $actual );
    271         }
    272 
    273         /**
    274          * We don't want to call the API when testing.
    275          *
    276          * @return array
    277          */
    278         private function wp_dropdown_languages_filter() {
    279                 return array(
    280                         'de_DE' => array(
    281                                 'language'    => 'de_DE',
    282                                 'native_name' => 'Deutsch',
    283                                 'iso'         => array( 'de' ),
    284                         ),
    285                         'it_IT' => array(
    286                                 'language'    => 'it_IT',
    287                                 'native_name' => 'Italiano',
    288                                 'iso'         => array( 'it', 'ita' ),
    289                         ),
    290                         'ja_JP' => array(
    291                                 'language'    => 'ja_JP',
    292                                 'native_name' => '日本語',
    293                                 'iso'         => array( 'ja' ),
    294                         ),
    295                 );
    296         }
    297 
    298         /**
    299130         * @ticket 35284
    300131         *
Note: See TracChangeset for help on using the changeset viewer.