diff --git a/core/modules/language/src/Tests/EntityTypeWithoutLanguageFormTest.php b/core/modules/language/tests/src/Functional/EntityTypeWithoutLanguageFormTest.php similarity index 87% rename from core/modules/language/src/Tests/EntityTypeWithoutLanguageFormTest.php rename to core/modules/language/tests/src/Functional/EntityTypeWithoutLanguageFormTest.php index 97ccf2fd8cf220e7b5f74fbb1fcf128e75b14d61..f7b6191484dba4753000f1226423fbc7369d3b0a 100644 --- a/core/modules/language/src/Tests/EntityTypeWithoutLanguageFormTest.php +++ b/core/modules/language/tests/src/Functional/EntityTypeWithoutLanguageFormTest.php @@ -1,8 +1,8 @@ <?php -namespace Drupal\language\Tests; +namespace Drupal\Tests\language\Functional; -use Drupal\simpletest\WebTestBase; +use Drupal\Tests\BrowserTestBase; /** * Tests entity type without language support. @@ -12,7 +12,7 @@ * * @group language */ -class EntityTypeWithoutLanguageFormTest extends WebTestBase { +class EntityTypeWithoutLanguageFormTest extends BrowserTestBase { /** * Modules to enable. diff --git a/core/modules/language/src/Tests/LanguageConfigurationElementTest.php b/core/modules/language/tests/src/Functional/LanguageConfigurationElementTest.php similarity index 98% rename from core/modules/language/src/Tests/LanguageConfigurationElementTest.php rename to core/modules/language/tests/src/Functional/LanguageConfigurationElementTest.php index dc3eb260b6ade774b30a88f2fe81f2cf659efdbf..87ad05bfd14b7c823da6ffaab27a8d92689b72c8 100644 --- a/core/modules/language/src/Tests/LanguageConfigurationElementTest.php +++ b/core/modules/language/tests/src/Functional/LanguageConfigurationElementTest.php @@ -1,19 +1,19 @@ <?php -namespace Drupal\language\Tests; +namespace Drupal\Tests\language\Functional; use Drupal\Core\Language\LanguageInterface; use Drupal\language\Entity\ConfigurableLanguage; use Drupal\language\Entity\ContentLanguageSettings; -use Drupal\simpletest\WebTestBase; use Drupal\taxonomy\Entity\Vocabulary; +use Drupal\Tests\BrowserTestBase; /** * Tests the features of the language configuration element field. * * @group language */ -class LanguageConfigurationElementTest extends WebTestBase { +class LanguageConfigurationElementTest extends BrowserTestBase { /** * Modules to enable. diff --git a/core/modules/language/src/Tests/LanguageConfigurationTest.php b/core/modules/language/tests/src/Functional/LanguageConfigurationTest.php similarity index 98% rename from core/modules/language/src/Tests/LanguageConfigurationTest.php rename to core/modules/language/tests/src/Functional/LanguageConfigurationTest.php index 46d5ed74d1203232014863bea3ae3d954484b524..9ed7abd1efc0d3a19feb11c1e212b2a451a3a7f6 100644 --- a/core/modules/language/src/Tests/LanguageConfigurationTest.php +++ b/core/modules/language/tests/src/Functional/LanguageConfigurationTest.php @@ -1,17 +1,17 @@ <?php -namespace Drupal\language\Tests; +namespace Drupal\Tests\language\Functional; use Drupal\Core\Language\LanguageInterface; use Drupal\language\Entity\ConfigurableLanguage; -use Drupal\simpletest\WebTestBase; +use Drupal\Tests\BrowserTestBase; /** * Adds and configures languages to check negotiation changes. * * @group language */ -class LanguageConfigurationTest extends WebTestBase { +class LanguageConfigurationTest extends BrowserTestBase { /** * Modules to enable. @@ -169,10 +169,7 @@ public function testLanguageConfigurationWeight() { $this->checkConfigurableLanguageWeight('after re-ordering'); // Remove predefined language. - $edit = [ - 'confirm' => 1, - ]; - $this->drupalPostForm('admin/config/regional/language/delete/fr', $edit, 'Delete'); + $this->drupalPostForm('admin/config/regional/language/delete/fr', [], 'Delete'); $this->checkConfigurableLanguageWeight('after deleting a language'); } diff --git a/core/modules/language/src/Tests/LanguageCustomLanguageConfigurationTest.php b/core/modules/language/tests/src/Functional/LanguageCustomLanguageConfigurationTest.php similarity index 96% rename from core/modules/language/src/Tests/LanguageCustomLanguageConfigurationTest.php rename to core/modules/language/tests/src/Functional/LanguageCustomLanguageConfigurationTest.php index 2eb02df1973c75b04ad2af3bbedaa24548ff6277..a0510beca72a0bb193f83d931068d323dbcc4364 100644 --- a/core/modules/language/src/Tests/LanguageCustomLanguageConfigurationTest.php +++ b/core/modules/language/tests/src/Functional/LanguageCustomLanguageConfigurationTest.php @@ -1,17 +1,17 @@ <?php -namespace Drupal\language\Tests; +namespace Drupal\Tests\language\Functional; -use Drupal\simpletest\WebTestBase; use Drupal\Core\Language\Language; use Drupal\Core\Language\LanguageInterface; +use Drupal\Tests\BrowserTestBase; /** * Adds and configures custom languages. * * @group language */ -class LanguageCustomLanguageConfigurationTest extends WebTestBase { +class LanguageCustomLanguageConfigurationTest extends BrowserTestBase { /** * Modules to enable. diff --git a/core/modules/language/src/Tests/LanguageListTest.php b/core/modules/language/tests/src/Functional/LanguageListTest.php similarity index 93% rename from core/modules/language/src/Tests/LanguageListTest.php rename to core/modules/language/tests/src/Functional/LanguageListTest.php index 641ddc41e084e6fac48573caab807196f662b927..8c671cfccfef62ef88db6528dcb793c52bf6d893 100644 --- a/core/modules/language/src/Tests/LanguageListTest.php +++ b/core/modules/language/tests/src/Functional/LanguageListTest.php @@ -1,18 +1,18 @@ <?php -namespace Drupal\language\Tests; +namespace Drupal\Tests\language\Functional; use Drupal\language\Entity\ConfigurableLanguage; -use Drupal\simpletest\WebTestBase; use Drupal\Core\Language\Language; use Drupal\Core\Language\LanguageInterface; +use Drupal\Tests\BrowserTestBase; /** * Adds a new language and tests changing its status and the default language. * * @group language */ -class LanguageListTest extends WebTestBase { +class LanguageListTest extends BrowserTestBase { /** * Modules to enable. @@ -176,9 +176,20 @@ public function testLanguageList() { $this->assertResponse(403, 'Can not delete locked language'); // Ensure that NL cannot be set default when it's not available. + // First create the NL language. + $edit = [ + 'predefined_langcode' => 'nl', + ]; + $this->drupalPostForm('admin/config/regional/language/add', $edit, 'Add language'); + + // Load the form which has now the additional NL language option. $this->drupalGet('admin/config/regional/language'); - $extra_values = '&site_default_language=nl'; - $this->drupalPostForm(NULL, [], t('Save configuration'), [], [], NULL, $extra_values); + + // Delete the NL language in the background. + $language_storage = $this->container->get('entity_type.manager')->getStorage('configurable_language'); + $language_storage->load('nl')->delete(); + + $this->drupalPostForm(NULL, ['site_default_language' => 'nl'], 'Save configuration'); $this->assertText(t('Selected default language no longer exists.')); $this->assertNoFieldChecked('edit-site-default-language-xx', 'The previous default language got deselected.'); } diff --git a/core/modules/language/src/Tests/LanguageLocaleListTest.php b/core/modules/language/tests/src/Functional/LanguageLocaleListTest.php similarity index 84% rename from core/modules/language/src/Tests/LanguageLocaleListTest.php rename to core/modules/language/tests/src/Functional/LanguageLocaleListTest.php index 5f96d89e5b237e8ec674fca94bfbddc51892be3b..a39a1124242b66a3bebcb69b4107218621e7fef1 100644 --- a/core/modules/language/src/Tests/LanguageLocaleListTest.php +++ b/core/modules/language/tests/src/Functional/LanguageLocaleListTest.php @@ -1,15 +1,15 @@ <?php -namespace Drupal\language\Tests; +namespace Drupal\Tests\language\Functional; -use Drupal\simpletest\WebTestBase; +use Drupal\Tests\BrowserTestBase; /** * Adds a new language with translations and tests language list order. * * @group language */ -class LanguageLocaleListTest extends WebTestBase { +class LanguageLocaleListTest extends BrowserTestBase { /** * Modules to enable. @@ -57,9 +57,11 @@ public function testLanguageLocaleList() { // Get language list displayed in select list. $this->drupalGet('fr/admin/config/regional/language/add'); - $select = $this->xpath('//select[@id="edit-predefined-langcode"]'); - $select_element = (array) end($select); - $options = $select_element['option']; + $option_elements = $this->xpath('//select[@id="edit-predefined-langcode/option"]'); + $options = []; + foreach ($option_elements as $option_element) { + $options[] = $option_element->getText(); + } // Remove the 'Custom language...' option form the end. array_pop($options); // Order language list. diff --git a/core/modules/language/src/Tests/LanguageSelectorTranslatableTest.php b/core/modules/language/tests/src/Functional/LanguageSelectorTranslatableTest.php similarity index 88% rename from core/modules/language/src/Tests/LanguageSelectorTranslatableTest.php rename to core/modules/language/tests/src/Functional/LanguageSelectorTranslatableTest.php index d13626cc452c94ff352fad4cd32c6501bce11b70..3d027c3fb5d882ec421d84fdd906c7082729a63a 100644 --- a/core/modules/language/src/Tests/LanguageSelectorTranslatableTest.php +++ b/core/modules/language/tests/src/Functional/LanguageSelectorTranslatableTest.php @@ -1,15 +1,15 @@ <?php -namespace Drupal\language\Tests; +namespace Drupal\Tests\language\Functional; -use Drupal\simpletest\WebTestBase; +use Drupal\Tests\BrowserTestBase; /** * Tests the content translation settings language selector options. * * @group language */ -class LanguageSelectorTranslatableTest extends WebTestBase { +class LanguageSelectorTranslatableTest extends BrowserTestBase { /** * Modules to enable. @@ -82,7 +82,7 @@ public function testLanguageStringSelector() { $elements = $this->xpath('//select[@id=:id]//option[@value=:option]', [':id' => 'edit-settings-user-user-settings-language-langcode', ':option' => 'en']); // Check that the language text is translated. - $this->assertEqual((string) $elements[0], $name_translation, 'Checking the option string English is translated to Spanish.'); + $this->assertEqual($elements[0]->getText(), $name_translation, 'Checking the option string English is translated to Spanish.'); } } diff --git a/core/modules/language/src/Tests/LanguageSwitchingTest.php b/core/modules/language/tests/src/Functional/LanguageSwitchingTest.php similarity index 94% rename from core/modules/language/src/Tests/LanguageSwitchingTest.php rename to core/modules/language/tests/src/Functional/LanguageSwitchingTest.php index 40015210ebff86e0a1f6ed08711d3863f6d75e00..1303082c154d1aabeb17ddab740dbda3dc9e9d4f 100644 --- a/core/modules/language/src/Tests/LanguageSwitchingTest.php +++ b/core/modules/language/tests/src/Functional/LanguageSwitchingTest.php @@ -1,19 +1,19 @@ <?php -namespace Drupal\language\Tests; +namespace Drupal\Tests\language\Functional; use Drupal\language\Entity\ConfigurableLanguage; use Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrl; use Drupal\menu_link_content\Entity\MenuLinkContent; use Drupal\Core\Language\LanguageInterface; -use Drupal\simpletest\WebTestBase; +use Drupal\Tests\BrowserTestBase; /** * Functional tests for the language switching feature. * * @group language */ -class LanguageSwitchingTest extends WebTestBase { +class LanguageSwitchingTest extends BrowserTestBase { /** * Modules to enable. @@ -73,22 +73,24 @@ protected function doTestLanguageBlockAuthenticated($block_label) { // Assert that each list item and anchor element has the appropriate data- // attributes. - list($language_switcher) = $this->xpath('//div[@id=:id]', [':id' => 'block-test-language-block']); + $language_switchers = $this->xpath('//div[@id=:id]/ul/li', [':id' => 'block-test-language-block']); $list_items = []; $anchors = []; $labels = []; - foreach ($language_switcher->ul->li as $list_item) { - $classes = explode(" ", (string) $list_item['class']); + foreach ($language_switchers as $list_item) { + $classes = explode(" ", $list_item->getAttribute('class')); list($langcode) = array_intersect($classes, ['en', 'fr']); $list_items[] = [ 'langcode_class' => $langcode, - 'data-drupal-link-system-path' => (string) $list_item['data-drupal-link-system-path'], + 'data-drupal-link-system-path' => $list_item->getAttribute('data-drupal-link-system-path'), ]; + + $link = $list_item->find('xpath', 'a'); $anchors[] = [ - 'hreflang' => (string) $list_item->a['hreflang'], - 'data-drupal-link-system-path' => (string) $list_item->a['data-drupal-link-system-path'], + 'hreflang' => $link->getAttribute('hreflang'), + 'data-drupal-link-system-path' => $link->getAttribute('data-drupal-link-system-path'), ]; - $labels[] = (string) $list_item->a; + $labels[] = $link->getText(); } $expected_list_items = [ 0 => ['langcode_class' => 'en', 'data-drupal-link-system-path' => 'user/2'], @@ -124,7 +126,7 @@ protected function doTestLanguageBlockAnonymous($block_label) { $this->assertText($block_label, 'Language switcher block found.'); // Assert that only the current language is marked as active. - list($language_switcher) = $this->xpath('//div[@id=:id]', [':id' => 'block-test-language-block']); + $language_switchers = $this->xpath('//div[@id=:id]/ul/li', [':id' => 'block-test-language-block']); $links = [ 'active' => [], 'inactive' => [], @@ -134,8 +136,8 @@ protected function doTestLanguageBlockAnonymous($block_label) { 'inactive' => [], ]; $labels = []; - foreach ($language_switcher->ul->li as $link) { - $classes = explode(" ", (string) $link['class']); + foreach ($language_switchers as $list_item) { + $classes = explode(" ", $list_item->getAttribute('class')); list($langcode) = array_intersect($classes, ['en', 'fr']); if (in_array('is-active', $classes)) { $links['active'][] = $langcode; @@ -143,14 +145,16 @@ protected function doTestLanguageBlockAnonymous($block_label) { else { $links['inactive'][] = $langcode; } - $anchor_classes = explode(" ", (string) $link->a['class']); + + $link = $list_item->find('xpath', 'a'); + $anchor_classes = explode(" ", $link->getAttribute('class')); if (in_array('is-active', $anchor_classes)) { $anchors['active'][] = $langcode; } else { $anchors['inactive'][] = $langcode; } - $labels[] = (string) $link->a; + $labels[] = $link->getText(); } $this->assertIdentical($links, ['active' => ['en'], 'inactive' => ['fr']], 'Only the current language list item is marked as active on the language switcher block.'); $this->assertIdentical($anchors, ['active' => ['en'], 'inactive' => ['fr']], 'Only the current language anchor is marked as active on the language switcher block.'); @@ -208,7 +212,7 @@ public function testLanguageBlockWithDomain() { ':hreflang' => 'en', ]); $english_url = $generator->generateFromRoute('entity.user.canonical', ['user' => 2], ['language' => $languages['en']]); - $this->assertEqual($english_url, (string) $english_link['href']); + $this->assertEqual($english_url, $english_link->getAttribute('href')); // Verify the Italian URL is correct list($italian_link) = $this->xpath('//div[@id=:id]/ul/li/a[@hreflang=:hreflang]', [ @@ -216,7 +220,7 @@ public function testLanguageBlockWithDomain() { ':hreflang' => 'it', ]); $italian_url = $generator->generateFromRoute('entity.user.canonical', ['user' => 2], ['language' => $languages['it']]); - $this->assertEqual($italian_url, (string) $italian_link['href']); + $this->assertEqual($italian_url, $italian_link->getAttribute('href')); } /** diff --git a/core/modules/language/src/Tests/LanguageUILanguageNegotiationTest.php b/core/modules/language/tests/src/Functional/LanguageUILanguageNegotiationTest.php similarity index 97% rename from core/modules/language/src/Tests/LanguageUILanguageNegotiationTest.php rename to core/modules/language/tests/src/Functional/LanguageUILanguageNegotiationTest.php index 3f54cf9bff72dcde0dada2670eff84d5436ba653..34f0c81f01acd8015303acc33cef706c3c5dddc5 100644 --- a/core/modules/language/src/Tests/LanguageUILanguageNegotiationTest.php +++ b/core/modules/language/tests/src/Functional/LanguageUILanguageNegotiationTest.php @@ -1,6 +1,6 @@ <?php -namespace Drupal\language\Tests; +namespace Drupal\Tests\language\Functional; use Drupal\Core\Url; use Drupal\language\Entity\ConfigurableLanguage; @@ -8,9 +8,9 @@ use Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationSelected; use Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationSession; use Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrl; +use Drupal\Tests\BrowserTestBase; use Drupal\user\Plugin\LanguageNegotiation\LanguageNegotiationUser; use Drupal\user\Plugin\LanguageNegotiation\LanguageNegotiationUserAdmin; -use Drupal\simpletest\WebTestBase; use Drupal\Core\Language\Language; use Drupal\Core\Language\LanguageInterface; use Symfony\Component\HttpFoundation\Request; @@ -37,7 +37,7 @@ * * @group language */ -class LanguageUILanguageNegotiationTest extends WebTestBase { +class LanguageUILanguageNegotiationTest extends BrowserTestBase { /** * Modules to enable. @@ -69,9 +69,9 @@ public function testUILanguageNegotiation() { // For testing path prefix. $langcode = 'zh-hans'; // For setting browser language preference to 'vi'. - $http_header_browser_fallback = ["Accept-Language: $langcode_browser_fallback;q=1"]; + $http_header_browser_fallback = ["Accept-Language" => "$langcode_browser_fallback;q=1"]; // For setting browser language preference to some unknown. - $http_header_blah = ["Accept-Language: blah;q=1"]; + $http_header_blah = ["Accept-Language" => "blah;q=1"]; // Setup the site languages by installing two languages. // Set the default language in order for the translated string to be registered @@ -107,7 +107,7 @@ public function testUILanguageNegotiation() { ]; $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter')); $textarea = current($this->xpath('//textarea')); - $lid = (string) $textarea[0]['name']; + $lid = $textarea->getAttribute('name'); $edit = [ $lid => $language_browser_fallback_string, ]; @@ -119,7 +119,7 @@ public function testUILanguageNegotiation() { ]; $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter')); $textarea = current($this->xpath('//textarea')); - $lid = (string) $textarea[0]['name']; + $lid = $textarea->getAttribute('name'); $edit = [ $lid => $language_string, ]; @@ -398,7 +398,7 @@ public function testUrlLanguageFallback() { // Access the front page without specifying any valid URL language prefix // and having as browser language preference a non-default language. - $http_header = ["Accept-Language: $langcode_browser_fallback;q=1"]; + $http_header = ["Accept-Language" => "$langcode_browser_fallback;q=1"]; $language = new Language(['id' => '']); $this->drupalGet('', ['language' => $language], $http_header); @@ -406,11 +406,11 @@ public function testUrlLanguageFallback() { // language. $args = [':id' => 'block-test-language-block', ':url' => \Drupal::url('<front>') . $langcode_browser_fallback]; $fields = $this->xpath('//div[@id=:id]//a[@class="language-link is-active" and starts-with(@href, :url)]', $args); - $this->assertTrue($fields[0] == $languages[$langcode_browser_fallback]->getName(), 'The browser language is the URL active language'); + $this->assertSame($fields[0]->getText(), $languages[$langcode_browser_fallback]->getName(), 'The browser language is the URL active language'); // Check that URLs are rewritten using the given browser language. $fields = $this->xpath('//div[@class="site-name"]/a[@rel="home" and @href=:url]', $args); - $this->assertTrue($fields[0] == 'Drupal', 'URLs are rewritten using the browser language.'); + $this->assertSame($fields[0]->getText(), 'Drupal', 'URLs are rewritten using the browser language.'); } /** diff --git a/core/modules/language/src/Tests/LanguageUrlRewritingTest.php b/core/modules/language/tests/src/Functional/LanguageUrlRewritingTest.php similarity index 96% rename from core/modules/language/src/Tests/LanguageUrlRewritingTest.php rename to core/modules/language/tests/src/Functional/LanguageUrlRewritingTest.php index 65ae64c37b31564e9df5ac2c943d671c15162039..7021aa0027fafbd2140a3b1349ee5695eae9d073 100644 --- a/core/modules/language/src/Tests/LanguageUrlRewritingTest.php +++ b/core/modules/language/tests/src/Functional/LanguageUrlRewritingTest.php @@ -1,12 +1,12 @@ <?php -namespace Drupal\language\Tests; +namespace Drupal\Tests\language\Functional; use Drupal\Core\Language\Language; use Drupal\Core\Language\LanguageInterface; use Drupal\Core\Url; use Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrl; -use Drupal\simpletest\WebTestBase; +use Drupal\Tests\BrowserTestBase; use Symfony\Component\HttpFoundation\Request; /** @@ -14,7 +14,7 @@ * * @group language */ -class LanguageUrlRewritingTest extends WebTestBase { +class LanguageUrlRewritingTest extends BrowserTestBase { /** * Modules to enable. @@ -90,9 +90,8 @@ private function checkUrl(LanguageInterface $language, $message1, $message2) { // we can always check the prefixed URL. $prefixes = language_negotiation_url_prefixes(); $stored_prefix = isset($prefixes[$language->getId()]) ? $prefixes[$language->getId()] : $this->randomMachineName(); - if ($this->assertNotEqual($stored_prefix, $prefix, $message1)) { - $prefix = $stored_prefix; - } + $this->assertNotEqual($stored_prefix, $prefix, $message1); + $prefix = $stored_prefix; $this->drupalGet("$prefix/$path"); $this->assertResponse(404, $message2);