Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Tests\toolbar\Functional;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\Tests\BrowserTestBase;
|
Chris@0
|
6
|
Chris@0
|
7 /**
|
Chris@0
|
8 * Tests that the toolbar icon class remains for translated menu items.
|
Chris@0
|
9 *
|
Chris@0
|
10 * @group toolbar
|
Chris@0
|
11 */
|
Chris@0
|
12 class ToolbarMenuTranslationTest extends BrowserTestBase {
|
Chris@0
|
13
|
Chris@0
|
14 /**
|
Chris@0
|
15 * A user with permission to access the administrative toolbar.
|
Chris@0
|
16 *
|
Chris@0
|
17 * @var \Drupal\user\UserInterface
|
Chris@0
|
18 */
|
Chris@0
|
19 protected $adminUser;
|
Chris@0
|
20
|
Chris@0
|
21 /**
|
Chris@0
|
22 * Modules to enable.
|
Chris@0
|
23 *
|
Chris@0
|
24 * @var array
|
Chris@0
|
25 */
|
Chris@0
|
26 public static $modules = ['toolbar', 'toolbar_test', 'locale', 'locale_test'];
|
Chris@0
|
27
|
Chris@0
|
28 protected function setUp() {
|
Chris@0
|
29 parent::setUp();
|
Chris@0
|
30
|
Chris@0
|
31 // Create an administrative user and log it in.
|
Chris@0
|
32 $this->adminUser = $this->drupalCreateUser(['access toolbar', 'translate interface', 'administer languages', 'access administration pages']);
|
Chris@0
|
33 $this->drupalLogin($this->adminUser);
|
Chris@0
|
34 }
|
Chris@0
|
35
|
Chris@0
|
36 /**
|
Chris@0
|
37 * Tests that toolbar classes don't change when adding a translation.
|
Chris@0
|
38 */
|
Chris@0
|
39 public function testToolbarClasses() {
|
Chris@0
|
40 $langcode = 'es';
|
Chris@0
|
41
|
Chris@0
|
42 // Add Spanish.
|
Chris@0
|
43 $edit['predefined_langcode'] = $langcode;
|
Chris@0
|
44 $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
|
Chris@0
|
45
|
Chris@0
|
46 // The menu item 'Structure' in the toolbar will be translated.
|
Chris@0
|
47 $menu_item = 'Structure';
|
Chris@0
|
48
|
Chris@0
|
49 // Visit a page that has the string on it so it can be translated.
|
Chris@0
|
50 $this->drupalGet($langcode . '/admin/structure');
|
Chris@0
|
51
|
Chris@0
|
52 // Search for the menu item.
|
Chris@0
|
53 $search = [
|
Chris@0
|
54 'string' => $menu_item,
|
Chris@0
|
55 'langcode' => $langcode,
|
Chris@0
|
56 'translation' => 'untranslated',
|
Chris@0
|
57 ];
|
Chris@0
|
58 $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
|
Chris@0
|
59 // Make sure will be able to translate the menu item.
|
Chris@0
|
60 $this->assertNoText('No strings available.', 'Search found the menu item as untranslated.');
|
Chris@0
|
61
|
Chris@0
|
62 // Check that the class is on the item before we translate it.
|
Chris@0
|
63 $xpath = $this->xpath('//a[contains(@class, "icon-system-admin-structure")]');
|
Chris@0
|
64 $this->assertEqual(count($xpath), 1, 'The menu item class ok before translation.');
|
Chris@0
|
65
|
Chris@0
|
66 // Translate the menu item.
|
Chris@0
|
67 $menu_item_translated = $this->randomMachineName();
|
Chris@0
|
68 $textarea = current($this->xpath('//textarea'));
|
Chris@0
|
69 $lid = (string) $textarea->getAttribute('name');
|
Chris@0
|
70 $edit = [
|
Chris@0
|
71 $lid => $menu_item_translated,
|
Chris@0
|
72 ];
|
Chris@0
|
73 $this->drupalPostForm('admin/config/regional/translate', $edit, t('Save translations'));
|
Chris@0
|
74
|
Chris@0
|
75 // Search for the translated menu item.
|
Chris@0
|
76 $search = [
|
Chris@0
|
77 'string' => $menu_item,
|
Chris@0
|
78 'langcode' => $langcode,
|
Chris@0
|
79 'translation' => 'translated',
|
Chris@0
|
80 ];
|
Chris@0
|
81 $this->drupalPostForm('admin/config/regional/translate', $search, t('Filter'));
|
Chris@0
|
82 // Make sure the menu item string was translated.
|
Chris@0
|
83 $this->assertText($menu_item_translated, 'Search found the menu item as translated: ' . $menu_item_translated . '.');
|
Chris@0
|
84
|
Chris@0
|
85 // Go to another page in the custom language and make sure the menu item
|
Chris@0
|
86 // was translated.
|
Chris@0
|
87 $this->drupalGet($langcode . '/admin/structure');
|
Chris@0
|
88 $this->assertText($menu_item_translated, 'Found the menu translated.');
|
Chris@0
|
89
|
Chris@0
|
90 // Toolbar icons are included based on the presence of a specific class on
|
Chris@0
|
91 // the menu item. Ensure that class also exists for a translated menu item.
|
Chris@0
|
92 $xpath = $this->xpath('//a[contains(@class, "icon-system-admin-structure")]');
|
Chris@0
|
93 $this->assertEqual(count($xpath), 1, 'The menu item class is the same.');
|
Chris@0
|
94 }
|
Chris@0
|
95
|
Chris@0
|
96 }
|