Chris@0: drupalCreateUser(['edit any page content', 'create page content', 'administer url aliases', 'create url aliases', 'administer languages', 'access administration pages']); Chris@0: $this->drupalLogin($web_user); Chris@0: Chris@0: // Enable French language. Chris@0: $edit = []; Chris@0: $edit['predefined_langcode'] = 'fr'; Chris@0: Chris@0: $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language')); Chris@0: Chris@0: // Enable URL language detection and selection. Chris@0: $edit = ['language_interface[enabled][language-url]' => 1]; Chris@0: $this->drupalPostForm('admin/config/regional/language/detection', $edit, t('Save settings')); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests that a language-neutral URL alias works. Chris@0: */ Chris@0: public function testLanguageNeutralUrl() { Chris@0: $name = $this->randomMachineName(8); Chris@0: $edit = []; Chris@0: $edit['source'] = '/admin/config/search/path'; Chris@0: $edit['alias'] = '/' . $name; Chris@0: $this->drupalPostForm('admin/config/search/path/add', $edit, t('Save')); Chris@0: Chris@0: $this->drupalGet($name); Chris@0: $this->assertText(t('Filter aliases'), 'Language-neutral URL alias works'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests that a default language URL alias works. Chris@0: */ Chris@0: public function testDefaultLanguageUrl() { Chris@0: $name = $this->randomMachineName(8); Chris@0: $edit = []; Chris@0: $edit['source'] = '/admin/config/search/path'; Chris@0: $edit['alias'] = '/' . $name; Chris@0: $edit['langcode'] = 'en'; Chris@0: $this->drupalPostForm('admin/config/search/path/add', $edit, t('Save')); Chris@0: Chris@0: $this->drupalGet($name); Chris@0: $this->assertText(t('Filter aliases'), 'English URL alias works'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests that a non-default language URL alias works. Chris@0: */ Chris@0: public function testNonDefaultUrl() { Chris@0: $name = $this->randomMachineName(8); Chris@0: $edit = []; Chris@0: $edit['source'] = '/admin/config/search/path'; Chris@0: $edit['alias'] = '/' . $name; Chris@0: $edit['langcode'] = 'fr'; Chris@0: $this->drupalPostForm('admin/config/search/path/add', $edit, t('Save')); Chris@0: Chris@0: $this->drupalGet('fr/' . $name); Chris@0: $this->assertText(t('Filter aliases'), 'Foreign URL alias works'); Chris@0: } Chris@0: Chris@17: /** Chris@17: * Test that language unspecific aliases are shown and saved in the node form. Chris@17: */ Chris@17: public function testNotSpecifiedNode() { Chris@17: // Create test node. Chris@17: $node = $this->drupalCreateNode(); Chris@17: Chris@17: // Create a language-unspecific alias in the admin UI, ensure that is Chris@17: // displayed and the langcode is not changed when saving. Chris@17: $edit = [ Chris@17: 'source' => '/node/' . $node->id(), Chris@17: 'alias' => '/' . $this->getRandomGenerator()->word(8), Chris@17: 'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED, Chris@17: ]; Chris@17: $this->drupalPostForm('admin/config/search/path/add', $edit, t('Save')); Chris@17: Chris@17: $this->drupalGet($node->toUrl('edit-form')); Chris@17: $this->assertSession()->fieldValueEquals('path[0][alias]', $edit['alias']); Chris@17: $this->drupalPostForm(NULL, [], t('Save')); Chris@17: Chris@17: $this->drupalGet('admin/config/search/path'); Chris@17: $this->assertSession()->pageTextContains('None'); Chris@17: $this->assertSession()->pageTextNotContains('English'); Chris@17: Chris@17: // Create another node, with no alias, to ensure non-language specific Chris@17: // aliases are loaded correctly. Chris@17: $node = $this->drupalCreateNode(); Chris@17: $this->drupalget($node->toUrl('edit-form')); Chris@17: $this->drupalPostForm(NULL, [], t('Save')); Chris@17: $this->assertSession()->pageTextNotContains(t('The alias is already in use.')); Chris@17: } Chris@17: Chris@0: }