file_download_link-8.x-1.0/tests/src/Functional/FileDownloadLinkMultilingualTest.php

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

namespace Drupal\Tests\file_download_link\Functional;

use Drupal\file\Entity\File;
use Drupal\media\Entity\Media;
use Drupal\node\Entity\Node;
use Drupal\Tests\BrowserTestBase;
use Drupal\Tests\TestFileCreationTrait;

/**
 * Tests file_download_link with translations.
 *
 * @group file_download_link
 * @requires module token
 */
class FileDownloadLinkMultilingualTest extends BrowserTestBase {

  use TestFileCreationTrait;

  /**
   * Modules to enable.
   *
   * @var array
   */
  protected static $modules = [
    'file_download_link_multilingual_test',
  ];

  /**
   * {@inheritdoc}
   */
  protected $defaultTheme = 'stark';

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();
    $admin_user = $this->drupalCreateUser([], NULL, TRUE);
    $this->drupalLogin($admin_user);

    $english_uri = $this::generateFile('my-english-text', 10, 10, 'text');
    $english_file = File::create([
      'uri' => $english_uri,
      'filename' => 'my-english-text',
    ]);
    $english_file->save();
    $french_uri = $this::generateFile('ma-texte-francaise', 10, 11, 'text');
    $french_file = File::create([
      'uri' => $french_uri,
      'filename' => 'ma-texte-francaise',
    ]);
    $french_file->save();

    // Create translated media. Having one translated and one
    // untranslated may help detect funkiness. We also have
    // one translated and one untranslated media field to detect
    // said funkiness.
    $media = Media::create([
      'bundle' => 'test_media',
      'name' => 'My Media',
      'field_media_file' => $english_file->id(),
      'field_description' => 'This is an English description',
    ]);
    $media->addTranslation('fr', [
      'name' => 'Mon Media',
      'field_media_file' => $french_file->id(),
      'field_description' => 'Les mots françaises.',
    ]);
    $media->save();
    // Create un-translated media.
    $media_un = Media::create([
      'bundle' => 'test_media',
      'name' => 'My Untranslated Media',
      'field_media_file' => $english_file->id(),
      'field_description' => 'This is untranslated',
    ]);
    $media_un->save();

    // Make images. Neither image itself is translated. The image
    // field is translated. Having two images is mostly just for
    // the heck of it and to show that the delta token magic works
    // in a functional setting.
    $test_files = $this->getTestFiles('image');
    $image1 = File::create([
      'uri' => $test_files[0]->uri,
      'filename' => 'image1',
    ]);
    $image1->save();
    $image2 = File::create([
      'uri' => $test_files[1]->uri,
      'filename' => 'image2',
    ]);
    $image2->save();

    // Create article referencing media and images.
    $node = Node::create([
      'type' => 'test_node',
      'title' => 'My Test Node',
      'field_media' => [$media->id(), $media_un->id()],
      'field_media_un' => [$media->id(), $media_un->id()],
      'field_image' => [
        [
          'target_id' => $image1->id(),
          'alt' => 'This is image 1',
        ],
        [
          'target_id' => $image2->id(),
          'alt' => 'This is image 2',
        ],
      ],
    ]);
    $node->addTranslation('fr', [
      'title' => 'Mon Node de Test',
      'field_media' => [$media->id(), $media_un->id()],
      'field_image' => [
        [
          'target_id' => $image1->id(),
          'alt' => 'Le premier',
        ],
        [
          'target_id' => $image2->id(),
          'alt' => 'La deuxieme',
        ],
      ],
    ]);
    $node->save();
  }

  /**
   * Tests file_download_link with multilingual stuff.
   */
  public function testFileDownloadLinkMultilingual() {
    $this->drupalGet('node/1');
    $this->assertSession()->pageTextContains('My Media|This is an English description (100 bytes)');
    $this->assertSession()->pageTextContains('My Untranslated Media|This is untranslated (100 bytes)');
    $this->assertSession()->pageTextMatchesCount(2, '/My Media\|This is an English description \(100 bytes\)/');
    $this->assertSession()->pageTextMatchesCount(2, '/My Untranslated Media\|This is untranslated \(100 bytes\)/');
    $this->assertSession()->responseContains('/my-english-text.txt');
    $this->assertSession()->responseNotContains('/ma-texte-francaise.txt');
    $this->assertSession()->pageTextContains('This is image 1 (125 bytes)');
    $this->assertSession()->pageTextContains('This is image 2 (140 bytes)');
    $this->drupalGet('fr/node/1');
    $this->assertSession()->pageTextMatchesCount(2, '/Mon Media\|Les mots françaises\. \(110 bytes\)/');
    $this->assertSession()->pageTextMatchesCount(2, '/My Untranslated Media\|This is untranslated \(100 bytes\)/');
    $this->assertSession()->responseContains('/my-english-text.txt');
    $this->assertSession()->responseContains('/ma-texte-francaise.txt');
    $this->assertSession()->pageTextContains('Le premier (125 bytes)');
    $this->assertSession()->pageTextContains('La deuxieme (140 bytes)');
  }

}

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

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