function TMGMTPluginsTestCase::testBasicWorkflow in Translation Management Tool 7
File
- tests/
tmgmt.plugin.test, line 45
Class
- TMGMTPluginsTestCase
- Tests interaction between core and the plugins.
Code
function testBasicWorkflow() {
// Submit a translation job.
$submit_job = $this
->createJob();
$submit_job->settings = array(
'action' => 'submit',
);
$submit_job
->requestTranslation();
$submit_job = tmgmt_job_load($submit_job->tjid);
$this
->assertTrue($submit_job
->isActive());
$messages = $submit_job
->getMessages();
$last_message = end($messages);
$this
->assertEqual('Test submit.', $last_message->message);
// Translate a job.
$translate_job = $this
->createJob();
$translate_job->settings = array(
'action' => 'translate',
);
$translate_job
->requestTranslation();
$translate_job = tmgmt_job_load($translate_job->tjid);
foreach ($translate_job
->getItems() as $job_item) {
$this
->assertTrue($job_item
->isNeedsReview());
}
$messages = $translate_job
->getMessages();
// array_values() results in numeric keys, which is necessary for list.
list($debug, $translated, $needs_review) = array_values($messages);
$this
->assertEqual('Test translator called.', $debug->message);
$this
->assertEqual('debug', $debug->type);
$this
->assertEqual('Test translation created.', $translated->message);
$this
->assertEqual('status', $translated->type);
// The third message is specific to a job item and has different state
// constants.
$this
->assertEqual('The translation of !source to @language is finished and can now be <a href="!review_url">reviewed</a>.', $needs_review->message);
$this
->assertEqual('status', $needs_review->type);
$i = 1;
foreach ($translate_job
->getItems() as $item) {
// Check the translated text.
if ($i != 3) {
$expected_text = 'de_Text for job item with type ' . $item->item_type . ' and id ' . $item->item_id . '.';
}
else {
// The third item has an explicitly stored data value.
$expected_text = 'de_Stored data';
}
$item_data = $item
->getData();
$this
->assertEqual($expected_text, $item_data['dummy']['deep_nesting']['#translation']['#text']);
$i++;
}
foreach ($translate_job
->getItems() as $job_item) {
$job_item
->acceptTranslation();
}
// @todo Accepting does not result in messages on the job anymore.
// Update once there are job item messages.
/*
$messages = $translate_job->getMessages();
$last_message = end($messages);
$this->assertEqual('Job accepted', $last_message->message);
$this->assertEqual('status', $last_message->type);*/
// Check if the translations have been "saved".
foreach ($translate_job
->getItems() as $item) {
$this
->assertTrue(variable_get('tmgmt_test_saved_translation_' . $item->item_type . '_' . $item->item_id, FALSE));
}
// A rejected job.
$reject_job = $this
->createJob();
$reject_job->settings = array(
'action' => 'reject',
);
$reject_job
->requestTranslation();
// Still rejected.
$this
->assertTrue($reject_job
->isRejected());
$messages = $reject_job
->getMessages();
$last_message = end($messages);
$this
->assertEqual('This is not supported.', $last_message->message);
$this
->assertEqual('error', $last_message->type);
// A failing job.
$failing_job = $this
->createJob();
$failing_job->settings = array(
'action' => 'fail',
);
$failing_job
->requestTranslation();
// Still new.
$this
->assertTrue($failing_job
->isUnprocessed());
$messages = $failing_job
->getMessages();
$last_message = end($messages);
$this
->assertEqual('Service not reachable.', $last_message->message);
$this
->assertEqual('error', $last_message->type);
}