View source
<?php
namespace Drupal\Tests\translation_views\Functional;
use Drupal\node\Entity\Node;
use Drupal\Tests\BrowserTestBase;
use Drupal\Tests\translators_content\Functional\TranslatorsContentTestsTrait;
class TranslatorsContentIntegrationTest extends BrowserTestBase {
use TranslatorsContentTestsTrait;
protected $profile = 'standard';
public static $modules = [
'translation_views_translators_test',
];
protected $translatorSkills;
protected static $registeredSkills = [
'en',
'fr',
];
protected static $unregisteredSkills = [
'de',
'sq',
];
protected $defaultLanguage = 'en';
public function setUp() {
parent::setUp();
$this
->drupalLogin($this->rootUser);
$this->translatorSkills = $this->container
->get('translators.skills');
$this
->createLanguages([
'fr',
'de',
'sq',
]);
$this
->enableTranslation('node', 'article');
$this
->drupalLogout();
}
public function testDependencyInstallation() {
$this
->assertTrue($this->container
->get('module_handler')
->moduleExists('translators'));
$this
->assertTrue($this->container
->get('module_handler')
->moduleExists('translators_content'));
$this
->assertTrue($this->container
->has('translators.skills'));
}
public function testTranslatorsLanguageFilterInView() {
$this
->drupalLogin($this->rootUser);
$this
->addSkill([
'en',
'fr',
]);
$node = $this
->createTestNode();
$this
->addAllNodeTranslations($node);
$this
->drupalGet('/test-translators-content-filter');
$this
->assertResponse(200);
$this
->assertOptionCount('translation_target_language', 4);
$this
->assertOptionAvailable('translation_target_language', 'en');
$this
->assertOptionAvailable('translation_target_language', 'fr');
$this
->assertOptionAvailable('translation_target_language', 'de');
$this
->assertOptionAvailable('translation_target_language', 'sq');
$this
->drupalGet('/admin/structure/views/nojs/handler/test_translators_content_integration/page_1/filter/translation_target_language');
$this
->assertSession()
->checkboxNotChecked('options[limit]');
$this
->assertSession()
->checkboxNotChecked('options[column][source]');
$this
->assertSession()
->checkboxChecked('options[column][target]');
$this
->drupalPostForm(NULL, [
'options[limit]' => 1,
'options[column][source]' => 1,
'options[column][target]' => 1,
], 'Apply');
$this
->click('input[value="Save"]');
$this
->drupalGet('/test-translators-content-filter');
$this
->assertResponse(200);
$this
->assertOptionCount('translation_target_language', 2);
$this
->assertOptionAvailable('translation_target_language', 'en');
$this
->assertOptionAvailable('translation_target_language', 'fr');
$this
->assertOptionNotAvailable('translation_target_language', 'de');
$this
->assertOptionNotAvailable('translation_target_language', 'sq');
$this
->removeSkills();
$this
->drupalGet('/test-translators-content-filter');
$this
->assertResponse(200);
$this
->assertSession()
->elementNotExists('css', 'table > tbody > tr:nth-child(1)');
$this
->assertOptionCount('translation_target_language', 1);
$this
->assertOptionAvailable('translation_target_language', 'All');
}
public function testTranslatorsOperationLinks() {
$userTranslatorsLimited = $this
->createUser([
'translators_content create content translations',
'translators_content update content translations',
'translators_content delete content translations',
'translate any entity',
]);
Node::create([
'type' => 'article',
'title' => "English node",
'langcode' => 'en',
])
->save();
$this
->drupalLogin($userTranslatorsLimited);
$this
->addSkill([
'en',
'fr',
]);
$this
->drupalGet('/test-translators-content-filter', [
'query' => [
'langcode' => 'en',
'translation_target_language' => 'fr',
],
]);
$this
->assertResponse(200);
$this
->assertSession()
->elementTextContains('css', "table > tbody > tr:nth-child(1) .views-field-translation-operations ul li a", 'Add');
$this
->drupalGet('/test-translators-content-filter', [
'query' => [
'langcode' => 'en',
'translation_target_language' => 'de',
],
]);
$this
->assertResponse(200);
$this
->assertSession()
->elementTextNotContains('css', "table > tbody > tr:nth-child(1) .views-field-translation-operations", 'Add');
Node::load(1)
->addTranslation('fr', [
'title' => 'French translation ',
])
->save();
$this
->drupalGet('/test-translators-content-filter', [
'query' => [
'langcode' => 'en',
'translation_target_language' => 'fr',
],
]);
$this
->assertResponse(200);
$this
->assertSession()
->elementTextContains('css', 'table > tbody > tr:nth-child(1) .views-field-translation-operations ul .edit a', 'Edit');
$this
->click('table > tbody > tr:nth-child(1) .views-field-translation-operations ul .edit a');
$this
->assertUrl('fr/node/1/edit');
$this
->drupalGet('/test-translators-content-filter', [
'query' => [
'langcode' => 'en',
'translation_target_language' => 'fr',
],
]);
$this
->assertResponse(200);
$this
->assertSession()
->elementTextContains('css', 'table > tbody > tr:nth-child(1) .views-field-translation-operations ul .delete a', 'Delete');
$this
->click('table > tbody > tr:nth-child(1) .views-field-translation-operations ul .delete a');
$this
->assertUrl('fr/node/1/delete');
$this
->drupalGet('/test-translators-content-filter', [
'query' => [
'langcode' => 'en',
'translation_target_language' => 'de',
],
]);
$this
->assertResponse(200);
$this
->assertSession()
->elementTextNotContains('css', "table > tbody > tr:nth-child(1) .views-field-translation-operations", 'Edit');
$this
->assertSession()
->elementTextNotContains('css', "table > tbody > tr:nth-child(1) .views-field-translation-operations", 'Delete');
}
}