ContentTranslationContextualLinksTest.php

Same filename in this branch
  1. 11.x core/modules/content_translation/tests/src/FunctionalJavascript/ContentTranslationContextualLinksTest.php
Same filename in other branches
  1. 9 core/modules/content_translation/tests/src/FunctionalJavascript/ContentTranslationContextualLinksTest.php
  2. 9 core/modules/content_translation/tests/src/Functional/ContentTranslationContextualLinksTest.php
  3. 8.9.x core/modules/content_translation/tests/src/FunctionalJavascript/ContentTranslationContextualLinksTest.php
  4. 8.9.x core/modules/content_translation/tests/src/Functional/ContentTranslationContextualLinksTest.php
  5. 10 core/modules/content_translation/tests/src/FunctionalJavascript/ContentTranslationContextualLinksTest.php
  6. 10 core/modules/content_translation/tests/src/Functional/ContentTranslationContextualLinksTest.php

Namespace

Drupal\Tests\content_translation\Functional

File

core/modules/content_translation/tests/src/Functional/ContentTranslationContextualLinksTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\content_translation\Functional;

use Drupal\field\Entity\FieldConfig;
use Drupal\field\Entity\FieldStorageConfig;
use Drupal\Tests\BrowserTestBase;
use Drupal\Tests\content_translation\Traits\ContentTranslationTestTrait;

/**
 * Tests that contextual links are available for content translation.
 *
 * @group content_translation
 */
class ContentTranslationContextualLinksTest extends BrowserTestBase {
    use ContentTranslationTestTrait;
    
    /**
     * The bundle being tested.
     *
     * @var string
     */
    protected $bundle;
    
    /**
     * {@inheritdoc}
     */
    protected $defaultTheme = 'stark';
    
    /**
     * The content type being tested.
     *
     * @var \Drupal\node\Entity\NodeType
     */
    protected $contentType;
    
    /**
     * The 'translator' user to use during testing.
     *
     * @var \Drupal\user\UserInterface
     */
    protected $translator;
    
    /**
     * The enabled languages.
     *
     * @var array
     */
    protected $langcodes;
    
    /**
     * {@inheritdoc}
     */
    protected static $modules = [
        'content_translation',
        'contextual',
        'node',
    ];
    
    /**
     * The profile to install as a basis for testing.
     *
     * @var string
     */
    protected $profile = 'testing';
    
    /**
     * {@inheritdoc}
     */
    protected function setUp() : void {
        parent::setUp();
        // Set up an additional language.
        $this->langcodes = [
            \Drupal::languageManager()->getDefaultLanguage()
                ->getId(),
            'es',
        ];
        static::createLanguageFromLangcode('es');
        // Create a content type.
        $this->bundle = $this->randomMachineName();
        $this->contentType = $this->drupalCreateContentType([
            'type' => $this->bundle,
        ]);
        // Add a field to the content type. The field is not yet translatable.
        FieldStorageConfig::create([
            'field_name' => 'field_test_text',
            'entity_type' => 'node',
            'type' => 'text',
            'cardinality' => 1,
        ])->save();
        FieldConfig::create([
            'entity_type' => 'node',
            'field_name' => 'field_test_text',
            'bundle' => $this->bundle,
            'label' => 'Test text-field',
        ])
            ->save();
        $this->container
            ->get('entity_display.repository')
            ->getFormDisplay('node', $this->bundle)
            ->setComponent('field_test_text', [
            'type' => 'text_textfield',
            'weight' => 0,
        ])
            ->save();
        // Create a translator user.
        $permissions = [
            'access contextual links',
            'administer nodes',
            "edit any {$this->bundle} content",
            'translate any entity',
        ];
        $this->translator = $this->drupalCreateUser($permissions);
    }
    
    /**
     * Tests that a contextual link is available for translating a node.
     */
    public function testContentTranslationContextualLinks() : void {
        // Create a node.
        $title = $this->randomString();
        $this->drupalCreateNode([
            'type' => $this->bundle,
            'title' => $title,
            'langcode' => 'en',
        ]);
        $node = $this->drupalGetNodeByTitle($title);
        static::enableContentTranslation('node', $this->bundle);
        // Check that the link leads to the translate page.
        $this->drupalLogin($this->translator);
        $translate_link = 'node/' . $node->id() . '/translations';
        $this->drupalGet($translate_link);
        $this->assertSession()
            ->pageTextContains('Translations of ' . $node->label());
    }

}

Classes

Title Deprecated Summary
ContentTranslationContextualLinksTest Tests that contextual links are available for content translation.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.