layout_builder_at-8.x-2.11/tests/src/Functional/LayoutBuilderAtTranslationTest.php

tests/src/Functional/LayoutBuilderAtTranslationTest.php
<?php

namespace Drupal\Tests\layout_builder_at\Functional;

/**
 * Layout Builder Asymmetric Translations tests.
 *
 * @group layout_builder_at
 */
class LayoutBuilderAtTranslationTest extends LayoutBuilderAtBase {

  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'block',
    'content_translation',
    'contextual',
    'entity_test',
    'field_ui',
    'layout_builder',
    'layout_builder_at',
  ];

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();
    $this->setUpViewDisplay();
    $this->setUpFormDisplay();
    $this->setUpEntities();
  }

  /**
   * Tests that layout overrides have different blocks.
   *
   * @throws \Behat\Mink\Exception\ElementNotFoundException
   * @throws \Behat\Mink\Exception\ExpectationException
   * @throws \Behat\Mink\Exception\ResponseTextException
   * @throws \Drupal\Core\Entity\EntityMalformedException
   */
  public function testAsymmetricTranslation() {
    $assert_session = $this->assertSession();

    $this->drupalGet('entity_test_mul/structure/entity_test_mul/display/default/layout');

    // Make layout builder field translatable.
    $this->drupalGet('admin/config/regional/content-language');
    $edit = [
      'settings[entity_test_mul][entity_test_mul][fields][layout_builder__layout]' => TRUE,
    ];
    $assert_session->pageTextNotContains('Layout Builder does not support translating layouts.');
    $this->submitForm($edit, 'Save configuration');

    // Create default entity.
    $this->createDefaultTranslationEntity();

    // Add layout override.
    $this->addLayoutOverride();

    // Now translate.
    $this->addEntityTranslation(NULL);

    $entity_url = $this->entity->toUrl()->toString();
    $language = \Drupal::languageManager()->getLanguage($this->langcodes[2]);
    $translated_entity_url = $this->entity->toUrl('canonical', ['language' => $language])->toString();
    $translated_layout_url = $translated_entity_url . '/layout';

    $this->drupalGet($entity_url);
    $assert_session->pageTextNotContains(self::TRANSLATED_TEXTFIELD_TEXT);
    $assert_session->pageTextContains(self::DEFAULT_TEXTFIELD_TEXT);
    $assert_session->linkExists('Layout');
    $assert_session->pageTextContains('Powered by Drupal');

    $this->drupalGet($translated_entity_url);
    $assert_session->pageTextNotContains(self::DEFAULT_TEXTFIELD_TEXT);

    // Translated field is visible as the field block is copied over from the
    // default.
    $assert_session->pageTextContains(self::TRANSLATED_TEXTFIELD_TEXT);

    // Layout should be accessible.
    $assert_session->linkExists('Layout');

    // Powered by Drupal block is not copied over.
    $assert_session->pageTextNotContains('Powered by Drupal');

    $this->drupalGet($translated_layout_url);
    $assert_session->statusCodeEquals(200);

    // Test source language.
    $second_language = \Drupal::languageManager()->getLanguage($this->langcodes[1]);
    $translated_entity_url = $this->entity->toUrl('canonical', ['language' => $second_language])->toString();
    $this->addEntityTranslation(TRUE, 1, 'fr');
    $this->drupalGet($translated_entity_url);
    $assert_session->pageTextContains(self::TRANSLATED_TEXTFIELD_TEXT);
    $assert_session->pageTextNotContains('Powered by Drupal');
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc