3 namespace Drupal\Tests\menu_link_content\Functional;
5 use Drupal\Tests\content_translation\Functional\ContentTranslationUITestBase;
6 use Drupal\menu_link_content\Entity\MenuLinkContent;
9 * Tests the menu link content translation UI.
13 class MenuLinkContentTranslationUITest extends ContentTranslationUITestBase {
18 protected $defaultCacheContexts = ['languages:language_interface', 'session', 'theme', 'url.path', 'url.query_args', 'user.permissions', 'user.roles:authenticated'];
25 public static $modules = [
27 'content_translation',
35 protected function setUp() {
36 $this->entityTypeId = 'menu_link_content';
37 $this->bundle = 'menu_link_content';
44 protected function getTranslatorPermissions() {
45 return array_merge(parent::getTranslatorPermissions(), ['administer menu']);
51 protected function getAdministratorPermissions() {
52 return array_merge(parent::getAdministratorPermissions(), ['administer themes', 'view the administration theme']);
58 protected function createEntity($values, $langcode, $bundle_name = NULL) {
59 $values['menu_name'] = 'tools';
60 $values['link']['uri'] = 'internal:/admin/structure/menu';
61 $values['title'] = 'Test title';
63 return parent::createEntity($values, $langcode, $bundle_name);
67 * Ensure that a translate link can be found on the menu edit form.
69 public function testTranslationLinkOnMenuEditForm() {
70 $this->drupalGet('admin/structure/menu/manage/tools');
71 $this->assertNoLink(t('Translate'));
73 $menu_link_content = MenuLinkContent::create(['menu_name' => 'tools', 'link' => ['uri' => 'internal:/admin/structure/menu']]);
74 $menu_link_content->save();
75 $this->drupalGet('admin/structure/menu/manage/tools');
76 $this->assertLink(t('Translate'));
80 * Tests that translation page inherits admin status of edit page.
82 public function testTranslationLinkTheme() {
83 $this->drupalLogin($this->administrator);
84 $entityId = $this->createEntity([], 'en');
86 // Set up Seven as the admin theme to test.
87 $this->container->get('theme_handler')->install(['seven']);
89 $edit['admin_theme'] = 'seven';
90 $this->drupalPostForm('admin/appearance', $edit, t('Save configuration'));
91 $this->drupalGet('admin/structure/menu/item/' . $entityId . '/edit');
92 $this->assertRaw('core/themes/seven/css/base/elements.css', 'Edit uses admin theme.');
93 $this->drupalGet('admin/structure/menu/item/' . $entityId . '/edit/translations');
94 $this->assertRaw('core/themes/seven/css/base/elements.css', 'Translation uses admin theme as well.');
100 protected function doTestTranslationEdit() {
101 $storage = $this->container->get('entity_type.manager')
102 ->getStorage($this->entityTypeId);
103 $storage->resetCache([$this->entityId]);
104 $entity = $storage->load($this->entityId);
105 $languages = $this->container->get('language_manager')->getLanguages();
107 foreach ($this->langcodes as $langcode) {
108 // We only want to test the title for non-english translations.
109 if ($langcode != 'en') {
110 $options = ['language' => $languages[$langcode]];
111 $url = $entity->urlInfo('edit-form', $options);
112 $this->drupalGet($url);
114 $title = t('@title [%language translation]', [
115 '@title' => $entity->getTranslation($langcode)->label(),
116 '%language' => $languages[$langcode]->getName(),
118 $this->assertRaw($title);