View source
<?php
namespace Drupal\tmgmt\Tests;
use Drupal\language\Entity\ConfigurableLanguage;
use Drupal\simpletest\WebTestBase;
use Drupal\tmgmt\Entity\Translator;
use Drupal\tmgmt\JobItemInterface;
@trigger_error('The ' . __NAMESPACE__ . '\\TMGMTTestBase is deprecated. Instead, use Drupal\\tmgmt\\Tests\\TMGMTTestBase. See https://www.drupal.org/node/2971931.', E_USER_DEPRECATED);
abstract class TMGMTTestBase extends WebTestBase {
protected $default_translator;
protected $admin_permissions = array();
protected $admin_user = NULL;
protected $translator_permissions = array();
protected $translator_user = NULL;
protected $languageWeight = 1;
public static $modules = array(
'tmgmt',
'tmgmt_test',
'node',
'block',
'locale',
);
function setUp() : void {
parent::setUp();
$this->default_translator = Translator::load('test_translator');
$this
->drupalPlaceBlock('local_tasks_block');
$this
->drupalPlaceBlock('local_actions_block');
$this
->drupalPlaceBlock('page_title_block');
$this->admin_permissions = array(
'administer languages',
'access administration pages',
'administer content types',
'administer tmgmt',
);
$this->translator_permissions = array(
'create translation jobs',
'submit translation jobs',
'accept translation jobs',
);
}
function loginAsAdmin($additional_permissions = array(), $reset_permissions = FALSE) {
$permissions = $this->admin_permissions;
if ($reset_permissions) {
$permissions = $additional_permissions;
}
elseif (!empty($additional_permissions)) {
$permissions = array_merge($permissions, $additional_permissions);
}
$this->admin_user = $this
->drupalCreateUser($permissions);
$this
->drupalLogin($this->admin_user);
return $this->admin_user;
}
function loginAsTranslator($additional_permissions = array(), $reset_permissions = FALSE) {
$permissions = $this->translator_permissions;
if ($reset_permissions) {
$permissions = $additional_permissions;
}
elseif (!empty($additional_permissions)) {
$permissions = array_merge($permissions, $additional_permissions);
}
$this->translator_user = $this
->drupalCreateUser($permissions);
$this
->drupalLogin($this->translator_user);
return $this->translator_user;
}
function createTranslator(array $values = []) {
$translator = Translator::create($values + [
'name' => strtolower($this
->randomMachineName()),
'label' => $this
->randomMachineName(),
'plugin' => 'test_translator',
'remote_languages_mappings' => [],
'settings' => empty($values['plugin']) ? [
'key' => $this
->randomMachineName(),
'another_key' => $this
->randomMachineName(),
] : [],
]);
$this
->assertEqual(SAVED_NEW, $translator
->save());
return $translator;
}
function createJob($source = 'en', $target = 'de', $uid = 1, $values = array()) {
$job = tmgmt_job_create($source, $target, $uid, $values);
$this
->assertEqual(SAVED_NEW, $job
->save());
$this
->assertTrue($job
->id() > 0);
return $job;
}
function addLanguage($langcode) {
$language = ConfigurableLanguage::createFromLangcode($langcode);
$language
->save();
}
function assertJobItemLangCodes(JobItemInterface $job_item, $expected_source_lang, array $actual_lang_codes) {
$this
->assertEqual($job_item
->getSourceLangCode(), $expected_source_lang);
$existing = $job_item
->getExistingLangCodes();
sort($existing);
sort($actual_lang_codes);
$this
->assertEqual($existing, $actual_lang_codes);
}
function clickLinkWithImageTitle($title) {
$urls = $this
->xpath('//a[img[@title=:title]]', [
':title' => 'Needs review',
]);
if (empty($urls)) {
$this
->fail('No image link with title' . $title . ' found');
return;
}
$url_target = $this
->getAbsoluteUrl($urls[0]['href']);
$this
->drupalGet($url_target);
}
}