annotate core/modules/path/tests/src/Functional/PathLanguageUiTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\Tests\path\Functional;
Chris@0 4
Chris@17 5 use Drupal\Core\Language\LanguageInterface;
Chris@17 6
Chris@0 7 /**
Chris@0 8 * Confirm that the Path module user interface works with languages.
Chris@0 9 *
Chris@0 10 * @group path
Chris@0 11 */
Chris@0 12 class PathLanguageUiTest extends PathTestBase {
Chris@0 13
Chris@0 14 /**
Chris@0 15 * Modules to enable.
Chris@0 16 *
Chris@0 17 * @var array
Chris@0 18 */
Chris@0 19 public static $modules = ['path', 'locale', 'locale_test'];
Chris@0 20
Chris@0 21 protected function setUp() {
Chris@0 22 parent::setUp();
Chris@0 23
Chris@0 24 // Create and log in user.
Chris@0 25 $web_user = $this->drupalCreateUser(['edit any page content', 'create page content', 'administer url aliases', 'create url aliases', 'administer languages', 'access administration pages']);
Chris@0 26 $this->drupalLogin($web_user);
Chris@0 27
Chris@0 28 // Enable French language.
Chris@0 29 $edit = [];
Chris@0 30 $edit['predefined_langcode'] = 'fr';
Chris@0 31
Chris@0 32 $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
Chris@0 33
Chris@0 34 // Enable URL language detection and selection.
Chris@0 35 $edit = ['language_interface[enabled][language-url]' => 1];
Chris@0 36 $this->drupalPostForm('admin/config/regional/language/detection', $edit, t('Save settings'));
Chris@0 37 }
Chris@0 38
Chris@0 39 /**
Chris@0 40 * Tests that a language-neutral URL alias works.
Chris@0 41 */
Chris@0 42 public function testLanguageNeutralUrl() {
Chris@0 43 $name = $this->randomMachineName(8);
Chris@0 44 $edit = [];
Chris@0 45 $edit['source'] = '/admin/config/search/path';
Chris@0 46 $edit['alias'] = '/' . $name;
Chris@0 47 $this->drupalPostForm('admin/config/search/path/add', $edit, t('Save'));
Chris@0 48
Chris@0 49 $this->drupalGet($name);
Chris@0 50 $this->assertText(t('Filter aliases'), 'Language-neutral URL alias works');
Chris@0 51 }
Chris@0 52
Chris@0 53 /**
Chris@0 54 * Tests that a default language URL alias works.
Chris@0 55 */
Chris@0 56 public function testDefaultLanguageUrl() {
Chris@0 57 $name = $this->randomMachineName(8);
Chris@0 58 $edit = [];
Chris@0 59 $edit['source'] = '/admin/config/search/path';
Chris@0 60 $edit['alias'] = '/' . $name;
Chris@0 61 $edit['langcode'] = 'en';
Chris@0 62 $this->drupalPostForm('admin/config/search/path/add', $edit, t('Save'));
Chris@0 63
Chris@0 64 $this->drupalGet($name);
Chris@0 65 $this->assertText(t('Filter aliases'), 'English URL alias works');
Chris@0 66 }
Chris@0 67
Chris@0 68 /**
Chris@0 69 * Tests that a non-default language URL alias works.
Chris@0 70 */
Chris@0 71 public function testNonDefaultUrl() {
Chris@0 72 $name = $this->randomMachineName(8);
Chris@0 73 $edit = [];
Chris@0 74 $edit['source'] = '/admin/config/search/path';
Chris@0 75 $edit['alias'] = '/' . $name;
Chris@0 76 $edit['langcode'] = 'fr';
Chris@0 77 $this->drupalPostForm('admin/config/search/path/add', $edit, t('Save'));
Chris@0 78
Chris@0 79 $this->drupalGet('fr/' . $name);
Chris@0 80 $this->assertText(t('Filter aliases'), 'Foreign URL alias works');
Chris@0 81 }
Chris@0 82
Chris@17 83 /**
Chris@17 84 * Test that language unspecific aliases are shown and saved in the node form.
Chris@17 85 */
Chris@17 86 public function testNotSpecifiedNode() {
Chris@17 87 // Create test node.
Chris@17 88 $node = $this->drupalCreateNode();
Chris@17 89
Chris@17 90 // Create a language-unspecific alias in the admin UI, ensure that is
Chris@17 91 // displayed and the langcode is not changed when saving.
Chris@17 92 $edit = [
Chris@17 93 'source' => '/node/' . $node->id(),
Chris@17 94 'alias' => '/' . $this->getRandomGenerator()->word(8),
Chris@17 95 'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED,
Chris@17 96 ];
Chris@17 97 $this->drupalPostForm('admin/config/search/path/add', $edit, t('Save'));
Chris@17 98
Chris@17 99 $this->drupalGet($node->toUrl('edit-form'));
Chris@17 100 $this->assertSession()->fieldValueEquals('path[0][alias]', $edit['alias']);
Chris@17 101 $this->drupalPostForm(NULL, [], t('Save'));
Chris@17 102
Chris@17 103 $this->drupalGet('admin/config/search/path');
Chris@17 104 $this->assertSession()->pageTextContains('None');
Chris@17 105 $this->assertSession()->pageTextNotContains('English');
Chris@17 106
Chris@17 107 // Create another node, with no alias, to ensure non-language specific
Chris@17 108 // aliases are loaded correctly.
Chris@17 109 $node = $this->drupalCreateNode();
Chris@17 110 $this->drupalget($node->toUrl('edit-form'));
Chris@17 111 $this->drupalPostForm(NULL, [], t('Save'));
Chris@17 112 $this->assertSession()->pageTextNotContains(t('The alias is already in use.'));
Chris@17 113 }
Chris@17 114
Chris@0 115 }