local_translation-8.x-1.x-dev/modules/local_translation_content/tests/src/Functional/LocalTranslationLanguageFilterTest.php

modules/local_translation_content/tests/src/Functional/LocalTranslationLanguageFilterTest.php
<?php

namespace Drupal\Tests\local_translation_content\Functional;

use Drupal\local_translation_content\LocalTranslationContentTestsTrait;
use Drupal\local_translation_content\Plugin\views\filter\TranslationLanguageLimitedToTranslationSkills;
use Drupal\node\Entity\Node;
use Drupal\Tests\BrowserTestBase;

/**
 * Class LocalTranslationLanguageFilterTest.
 *
 * @package Drupal\Tests\local_translation_content\Functional
 *
 * @group local_translation_content
 */
class LocalTranslationLanguageFilterTest extends BrowserTestBase {
  use LocalTranslationContentTestsTrait;

  /**
   * {@inheritdoc}
   */
  public $profile = 'standard';
  /**
   * {@inheritdoc}
   */
  public static $modules = ['local_translation_content', 'local_translation_content_test_views'];

  /**
   * {@inheritdoc}
   */
  public function setUp() {
    parent::setUp();
    $this->setUpTest();
  }

  /**
   * Test local translation language filter altering.
   */
  public function testLocalTranslationLanguageFilterPluginAltering() {
    $definition = $this->container
      ->get('plugin.manager.views.filter')
      ->getDefinition('language');

    $this->assertNotNull($definition);
    $this->assertArrayHasKey('plugin_type', $definition);
    $this->assertArrayHasKey('id', $definition);
    $this->assertArrayHasKey('class', $definition);
    $this->assertArrayHasKey('provider', $definition);

    $this->assertEquals('local_translation_content', $definition['provider']);
    $this->assertEquals(TranslationLanguageLimitedToTranslationSkills::class, $definition['class']);
    $this->assertEquals('language', $definition['id']);
    $this->assertEquals('filter', $definition['plugin_type']);
  }

  /**
   * Test local translation language filter in view.
   */
  public function testLocalTranslationLanguageFilterInView() {
    $this->drupalLogin($this->rootUser);
    $this->registerTestSkills();
    for ($i = 1; $i <= 10; $i++) {
      Node::create([
        'type' => 'article',
        'title' => $this->randomString(),
        'langcode' => static::$registeredSkills[0],
      ])
        ->addTranslation(static::$registeredSkills[1], ['title' => $this->randomString()])
        ->save();
    }

    $this->drupalGet('/test-local-translation-content-filter');
    $this->assertSession()->statusCodeEquals(200);
    $this->assertSession()->statusCodeNotEquals(404);

    // Find langcode field element.
    $langcode_field = $this->getSession()
      ->getPage()
      ->findField('langcode');
    $this->assertNotNull($langcode_field);

    // Get all existing options of the langcode filter dropdown.
    $options = $langcode_field->findAll('xpath', '//option');
    $this->assertNotNull($options);

    // Prepare array of options' values.
    $language_options = array_map(function ($option) {
      return $option->getAttribute('value') ?: $option->getText();
    }, $options);

    $this->assertCount(9, $language_options);
    $this->assertContains('en', $language_options);
    $this->assertContains('fr', $language_options);
    $this->assertContains('de', $language_options);
    $this->assertContains('sq', $language_options);

    $this->drupalGet('/admin/structure/views/nojs/handler/test_local_translation_content_filter/page_1/filter/langcode');
    $this->drupalPostForm(NULL, [
      'options[limit]'        => 1,
      'options[column][from]' => 1,
      'options[column][to]'   => 1,
    ], 'Apply');
    $this->click('input[value="Save"]');

    $this->drupalGet('/test-local-translation-content-filter');
    $this->assertSession()->statusCodeEquals(200);
    $this->assertSession()->statusCodeNotEquals(404);

    // Find langcode field element.
    $langcode_field = $this->getSession()
      ->getPage()
      ->findField('langcode');
    $this->assertNotNull($langcode_field);

    // Get all existing options of the langcode filter dropdown.
    $options = $langcode_field->findAll('xpath', '//option');
    $this->assertNotNull($options);

    // Prepare array of options' values.
    $language_options = array_map(function ($option) {
      return $option->getAttribute('value') ?: $option->getText();
    }, $options);

    $this->assertCount(3, $language_options);
    $this->assertContains('All', $language_options);
    $this->assertContains('en', $language_options);
    $this->assertContains('fr', $language_options);
    $this->assertNotContains('de', $language_options);
    $this->assertNotContains('sq', $language_options);

  }

}

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

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