reverted: --- b/sources/content/tests/src/Kernel/ContentEntitySourceUnitTest.php +++ a/sources/content/tests/src/Kernel/ContentEntitySourceUnitTest.php @@ -440,30 +440,6 @@ $node = Node::load($node->id()); $manager = $this->container->get('content_translation.manager'); $this->assertEquals('en', $manager->getTranslationMetadata($node->getTranslation('de'))->getSource(), 'Source language is correct.'); - - $new_node = Node::create([ - 'title' => 'Long text', - 'uid' => $account->id(), - 'type' => $type->id(), - 'langcode' => 'en', - ]); - $new_node->save(); - $job = tmgmt_job_create('en', 'de'); - $job->translator = 'test_translator'; - $job->save(); - $job_item = tmgmt_job_item_create('test_source', $new_node->getEntityTypeId(), $new_node->id(), array('tjid' => $job->id())); - $job_item->save(); - $job_item->updateData('title', [0 => ['value' => ['#translation' => ['#text' => 'Invalid translation that will cause an exception']]]], TRUE); - $job_item->save(); - - // Request translation. Here it fails. - $job->requestTranslation(); - $items = $job->getItems(); - /** @var \Drupal\tmgmt\Entity\JobItem $item */ - $item = reset($items); - // If it was set to Auto Accept but there was an error, the Job Item should - // be set as Needs Review. - $this->assertEqual($item->getState(), JobItemInterface::STATE_REVIEW); } /** diff -u b/src/Entity/JobItem.php b/src/Entity/JobItem.php --- b/src/Entity/JobItem.php +++ b/src/Entity/JobItem.php @@ -476,7 +476,7 @@ $this->acceptTranslation(); } catch (\Exception $e) { - $this->getJob()->addMessage('Translation could not be accepted. Message error: @error', ['@error' => $e->getMessage()], 'error'); + $this->addMessage('Failed to automatically accept translation, error: @error', ['@error' => $e->getMessage()], 'error'); } } return $return; only in patch2: unchanged: --- a/tests/src/Kernel/CrudTest.php +++ b/tests/src/Kernel/CrudTest.php @@ -2,11 +2,14 @@ namespace Drupal\Tests\tmgmt\Kernel; +use Drupal\node\Entity\Node; +use Drupal\node\Entity\NodeType; use Drupal\tmgmt\ContinuousTranslatorInterface; use Drupal\tmgmt\Entity\Job; use Drupal\tmgmt\Entity\JobItem; use Drupal\tmgmt\Entity\RemoteMapping; use Drupal\tmgmt\Entity\Translator; +use Drupal\tmgmt\JobItemInterface; /** * Basic crud operations for jobs and translators @@ -15,6 +18,22 @@ use Drupal\tmgmt\Entity\Translator; */ class CrudTest extends TMGMTKernelTestBase { + public static $modules = [ + 'user', + 'system', + 'field', + 'text', + 'entity_test', + 'language', + 'locale', + 'tmgmt', + 'tmgmt_test', + 'options', + 'node', + 'field', + 'content_translation', + ]; + /** * {@inheritdoc} */ @@ -22,6 +41,8 @@ class CrudTest extends TMGMTKernelTestBase { parent::setUp(); \Drupal::service('router.builder')->rebuild(); $this->installEntitySchema('tmgmt_remote'); + $this->installSchema('node', ['node_access']); + $this->installConfig(['node']); } /** @@ -231,6 +252,37 @@ class CrudTest extends TMGMTKernelTestBase { // Test the second item label length - it must not exceed the // TMGMT_JOB_LABEL_MAX_LENGTH. $this->assertTrue(Job::LABEL_MAX_LENGTH >= strlen($items[$item2->id()]->label())); + + $type = $this->drupalCreateContentType(); + $content_translation_manager = \Drupal::service('content_translation.manager'); + $content_translation_manager->setEnabled('node', $type->id(), TRUE); + $new_node = Node::create([ + 'title' => 'Long text', + 'type' => $type->id(), + 'langcode' => 'en', + ]); + $new_node->save(); + $job = tmgmt_job_create('en', 'de'); + $job->translator = 'test_translator'; + $job->save(); + $job_item = tmgmt_job_item_create('test_source', $new_node->getEntityTypeId(), $new_node->id(), array('tjid' => $job->id())); + $job_item->save(); + $job_item->updateData('title', [0 => ['value' => ['#translation' => ['#text' => 'Invalid translation that will cause an exception']]]], TRUE); + $job_item->save(); + + // Request translation. Here it fails. + $job->requestTranslation(); + $items = $job->getItems(); + /** @var \Drupal\tmgmt\Entity\JobItem $item */ + $item = reset($items); + // If it was set to Auto Accept but there was an error, the Job Item should + // be set as Needs Review. + $this->assertEqual($item->getState(), JobItemInterface::STATE_REVIEW); + + $messages = $job->getMessages(); + $last_message = end($messages); + debug($last_message->message->value); + $this->assertEqual('Failed to automatically accept translation, error: ', $last_message->message->value); } /** @@ -626,4 +678,33 @@ class CrudTest extends TMGMTKernelTestBase { $this->assertTrue($item->isNeedsReview()); } + /** + * Creates a custom content type based on default settings. + * + * @param $settings + * An array of settings to change from the defaults. + * Example: 'type' => 'foo'. + * @return + * Created content type. + */ + protected function drupalCreateContentType($settings = []) { + $name = strtolower($this->randomMachineName(8)); + $values = array( + 'type' => $name, + 'name' => $name, + 'base' => 'node_content', + 'title_label' => 'Title', + 'body_label' => 'Body', + 'has_title' => 1, + 'has_body' => 1, + ); + + $type = NodeType::create($values); + $saved = $type->save(); + node_add_body_field($type); + + $this->assertEquals(SAVED_NEW, $saved); + + return $type; + } }