<?php
namespace Drupal\Tests\tmgmt_local\Functional;
use Drupal\tmgmt\Entity\Job;
use Drupal\tmgmt\JobItemInterface;
use Drupal\node\Entity\Node;
class LocalTranslatorContinuousTest extends LocalTranslatorTestBase {
protected static $modules = array(
'tmgmt_content',
);
public function testContinuousJobs() {
$type = $this
->drupalCreateContentType();
$content_translation_manager = \Drupal::service('content_translation.manager');
$content_translation_manager
->setEnabled('node', $type
->label(), TRUE);
$this->assignee = $this
->drupalCreateUser($this->localTranslatorPermissions);
$this
->drupalLogin($this->assignee);
$this
->drupalGet($this->assignee
->toUrl('edit-form'));
$edit = array(
'tmgmt_translation_skills[0][language_from]' => 'en',
'tmgmt_translation_skills[0][language_to]' => 'de',
);
$this
->submitForm($edit, 'Save');
$this
->loginAsAdmin($this->localManagerPermissions);
$this
->config('tmgmt.settings')
->set('submit_job_item_on_cron', TRUE)
->save();
$continuous_settings = [
'content' => [
'node' => [
'enabled' => 1,
'bundles' => [
$type
->id() => 1,
],
],
],
];
$translator = $this
->createTranslator([
'plugin' => 'local',
]);
$continuous_job = $this
->createJob('en', 'de', 0, [
'label' => 'Continuous job',
'job_type' => Job::TYPE_CONTINUOUS,
'translator' => $translator,
'continuous_settings' => $continuous_settings,
]);
$continuous_job
->save();
$node = Node::create([
'title' => $this
->randomMachineName(),
'uid' => 0,
'type' => $type
->id(),
'langcode' => 'en',
]);
$node
->save();
$continuous_job_items = $continuous_job
->getItems();
$this
->assertCount(1, $continuous_job_items);
$continuous_job_item = reset($continuous_job_items);
$this
->assertTrue($continuous_job_item
->getState() == JobItemInterface::STATE_INACTIVE);
tmgmt_cron();
$this
->drupalGet('translate');
$this
->clickLink('View');
$edit = array(
'tuid' => $this->assignee
->id(),
);
$this
->submitForm($edit, 'Save task');
$this
->drupalLogin($this->assignee);
$this
->drupalGet('translate');
$this
->clickLink('View');
$this
->clickLink('Translate');
$edit = array(
'title|0|value[translation]' => 'Text für Job Element mit Typ-Knoten und ID 1.',
);
$this
->submitForm($edit, 'Save as completed');
$items = $continuous_job
->getItems();
$item = reset($items);
$data = $item
->getData();
$this
->assertEquals('Text für Job Element mit Typ-Knoten und ID 1.', $data['title']['0']['value']['#translation']['#text']);
$this
->assertTrue($continuous_job
->getState() == Job::STATE_CONTINUOUS);
$this
->assertTrue($item
->getState() == JobItemInterface::STATE_REVIEW);
}
}