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);
}
}
