tmgmt-8.x-1.x-dev/tests/src/Functional/TMGMTUiReviewTest.php

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

namespace Drupal\Tests\tmgmt\Functional;

use Drupal\file\Entity\File;
use Drupal\file\FileInterface;
use Drupal\filter\Entity\FilterFormat;
use Drupal\tmgmt\Entity\Job;
use Drupal\tmgmt\Entity\JobItem;

/**
 * Verifies the UI of the review form.
 *
 * @group tmgmt
 */
class TMGMTUiReviewTest extends TMGMTTestBase {
  use TmgmtEntityTestTrait;

  /**
   * Image file entity.
   *
   * @var \Drupal\file\FileInterface
   */
  protected FileInterface $image;

  /**
   * {@inheritdoc}
   */
  protected static $modules = ['tmgmt_content', 'image', 'node'];

  /**
   * {@inheritdoc}
   */
  function setUp(): void {
    parent::setUp();

    $this->addLanguage('de');

    $filtered_html_format = FilterFormat::create(array(
      'format' => 'filtered_html',
      'name' => 'Filtered HTML',
    ));
    $filtered_html_format->save();

    $this->drupalCreateContentType(array('type' => 'test_bundle'));

    $this->loginAsAdmin(array(
      'create translation jobs',
      'submit translation jobs',
      'create test_bundle content',
      $filtered_html_format->getPermissionName(),
    ));

    \Drupal::service('file_system')->copy(DRUPAL_ROOT . '/core/misc/druplicon.png', 'public://example.jpg');
    $this->image = File::create(array(
      'uri' => 'public://example.jpg',
    ));
    $this->image->save();
  }

  /**
   * Tests text format permissions on translation fields.
   */
  public function testTextFormatPermissions() {
    // Create a job.
    $job1 = $this->createJob();
    $job1->save();
    $job1->setState(Job::STATE_ACTIVE);

    \Drupal::state()->set('tmgmt.test_source_data', array(
      'title' => array(
        'deep_nesting' => array(
          '#text' => '<p><em><strong>Six dummy HTML tags in the title.</strong></em></p>',
          '#label' => 'Title',
        ),
      ),
      'body' => array(
        'deep_nesting' => array(
          '#text' => '<p>Two dummy HTML tags in the body.</p>',
          '#label' => 'Body',
          '#format' => 'full_html',
        )
      ),
    ));
    $item1 = $job1->addItem('test_source', 'test', 1);
    $item1->setState(JobItem::STATE_REVIEW);
    $item1->save();
    $this->drupalGet('admin/tmgmt/items/' . $item1->id());

    // Assert that translator has no permission to review/update "body" field.
    $source_field_message = $this->xpath('//*[@id="edit-bodydeep-nesting-source"]')[0];
    $translation_field_message = $this->xpath('//*[@id="edit-bodydeep-nesting-translation"]')[0];
    $this->assertEquals('This field has been disabled because you do not have sufficient permissions to edit it. It is not possible to review or accept this job item.', $source_field_message->getText());
    $this->assertEquals('This field has been disabled because you do not have sufficient permissions to edit it. It is not possible to review or accept this job item.', $translation_field_message->getText());
    $this->assertSession()->responseNotContains('Save as completed" class="button button--primary js-form-submit form-submit"');

    // Remove full html format from the body field.
    $item1->updateData('body|deep_nesting', ['#format' => '']);
    $item1->save();

    // Translator should see enabled translation field again.
    $this->drupalGet('admin/tmgmt/items/' . $item1->id());
    $this->assertSession()->responseContains('Save as completed" class="button button--primary js-form-submit form-submit"');
    $this->assertSession()->fieldExists('body|deep_nesting[translation]');
    $translation_field = $this->xpath('//*[@id="edit-bodydeep-nesting-translation"]')[0];
    $this->assertEquals('', $translation_field->getText());
  }

}

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

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