function TMGMTUITestCase::testCheckoutForm in Translation Management Tool 7
Test the page callbacks to create jobs and check them out.
File
- ui/
tmgmt_ui.test, line 29
Class
- TMGMTUITestCase
- Test the UI of tmgmt, for example the checkout form.
Code
function testCheckoutForm() {
// Add a first item to the job. This will auto-create the job.
$job = tmgmt_job_match_item('en', '');
$job
->addItem('test_source', 'test', 1);
// Go to checkout form.
$redirects = tmgmt_ui_job_checkout_multiple(array(
$job,
));
$this
->drupalGet(reset($redirects));
// Check checkout form.
$this
->assertText('test_source:test:1');
// Add two more job items.
$job
->addItem('test_source', 'test', 2);
$job
->addItem('test_source', 'test', 3);
// Go to checkout form.
$redirects = tmgmt_ui_job_checkout_multiple(array(
$job,
));
$this
->drupalGet(reset($redirects));
// Check checkout form.
$this
->assertText('test_source:test:1');
$this
->assertText('test_source:test:2');
$this
->assertText('test_source:test:3');
// @todo: Test ajax functionality.
// Attempt to translate into greek.
$edit = array(
'target_language' => 'el',
'settings[action]' => 'translate',
);
$this
->drupalPost(NULL, $edit, t('Submit to translator'));
$this
->assertText(t('@translator can not translate from @source to @target.', array(
'@translator' => 'Test translator (auto created)',
'@source' => 'English',
'@target' => 'Greek',
)));
// Job still needs to be in state new.
$job = entity_load_unchanged('tmgmt_job', $job->tjid);
$this
->assertTrue($job
->isUnprocessed());
$edit = array(
'target_language' => 'es',
'settings[action]' => 'translate',
);
$this
->drupalPost(NULL, $edit, t('Submit to translator'));
// Job needs to be in state active.
$job = entity_load_unchanged('tmgmt_job', $job->tjid);
$this
->assertTrue($job
->isActive());
foreach ($job
->getItems() as $job_item) {
/* @var $job_item TMGMTJobItem */
$this
->assertTrue($job_item
->isNeedsReview());
}
$this
->assertText(t('Test translation created'));
$this
->assertNoText(t('Test translator called'));
// Test redirection.
$this
->assertText(t('Job overview'));
// Another job.
$previous_tjid = $job->tjid;
$job = tmgmt_job_match_item('en', '');
$job
->addItem('test_source', 'test', 1);
$this
->assertNotEqual($job->tjid, $previous_tjid);
// Go to checkout form.
$redirects = tmgmt_ui_job_checkout_multiple(array(
$job,
));
$this
->drupalGet(reset($redirects));
// Check checkout form.
$this
->assertText('You can provide a label for this job in order to identify it easily later on.');
$this
->assertText('test_source:test:1');
$edit = array(
'target_language' => 'es',
'settings[action]' => 'submit',
);
$this
->drupalPost(NULL, $edit, t('Submit to translator'));
$this
->assertText(t('Test submit'));
$job = entity_load_unchanged('tmgmt_job', $job->tjid);
$this
->assertTrue($job
->isActive());
// Another job.
$job = tmgmt_job_match_item('en', 'es');
$job
->addItem('test_source', 'test', 1);
// Go to checkout form.
$redirects = tmgmt_ui_job_checkout_multiple(array(
$job,
));
$this
->drupalGet(reset($redirects));
// Check checkout form.
$this
->assertText('You can provide a label for this job in order to identify it easily later on.');
$this
->assertText('test_source:test:1');
$edit = array(
'settings[action]' => 'reject',
);
$this
->drupalPost(NULL, $edit, t('Submit to translator'));
$this
->assertText(t('This is not supported'));
$job = entity_load_unchanged('tmgmt_job', $job->tjid);
$this
->assertTrue($job
->isRejected());
// Check displayed job messages.
$args = array(
'@view' => 'view-tmgmt-ui-job-messages',
);
$this
->assertEqual(2, count($this
->xpath('//div[contains(@class, @view)]//tbody/tr', $args)));
// Check that the author for each is the current user.
$message_authors = $this
->xpath('////div[contains(@class, @view)]//td[contains(@class, @field)]/span', $args + array(
'@field' => 'views-field-name',
));
$this
->assertEqual(2, count($message_authors));
foreach ($message_authors as $message_author) {
$this
->assertEqual((string) $message_author, $this->translator_user->name);
}
// Make sure that rejected jobs can be re-submitted.
$this
->assertTrue($job
->isSubmittable());
$edit = array(
'settings[action]' => 'translate',
);
$this
->drupalPost(NULL, $edit, t('Submit to translator'));
$this
->assertText(t('Test translation created'));
// Another job.
$job = tmgmt_job_match_item('en', 'es');
$job
->addItem('test_source', 'test', 1);
// Go to checkout form.
$redirects = tmgmt_ui_job_checkout_multiple(array(
$job,
));
$this
->drupalGet(reset($redirects));
// Check checkout form.
$this
->assertText('You can provide a label for this job in order to identify it easily later on.');
$this
->assertText('test_source:test:1');
$edit = array(
'settings[action]' => 'fail',
);
$this
->drupalPost(NULL, $edit, t('Submit to translator'));
$this
->assertText(t('Service not reachable'));
$job = entity_load_unchanged('tmgmt_job', $job->tjid);
$this
->assertTrue($job
->isUnprocessed());
// Verify that we are still on the form.
$this
->assertText('You can provide a label for this job in order to identify it easily later on.');
// Another job.
$job = tmgmt_job_match_item('en', 'es');
$job
->addItem('test_source', 'test', 1);
// Go to checkout form.
$redirects = tmgmt_ui_job_checkout_multiple(array(
$job,
));
$this
->drupalGet(reset($redirects));
// Check checkout form.
$this
->assertText('You can provide a label for this job in order to identify it easily later on.');
$this
->assertText('test_source:test:1');
$edit = array(
'settings[action]' => 'not_translatable',
);
$this
->drupalPost(NULL, $edit, t('Submit to translator'));
// @todo Update to correct failure message.
$this
->assertText(t('Fail'));
$job = entity_load_unchanged('tmgmt_job', $job->tjid);
$this
->assertTrue($job
->isUnprocessed());
// Test default settings.
$this->default_translator->settings['action'] = 'reject';
$this->default_translator
->save();
$job = tmgmt_job_match_item('en', 'es');
$job
->addItem('test_source', 'test', 1);
// Go to checkout form.
$redirects = tmgmt_ui_job_checkout_multiple(array(
$job,
));
$this
->drupalGet(reset($redirects));
// Check checkout form.
$this
->assertText('You can provide a label for this job in order to identify it easily later on.');
$this
->assertText('test_source:test:1');
// The action should now default to reject.
$this
->drupalPost(NULL, array(), t('Submit to translator'));
$this
->assertText(t('This is not supported.'));
$job = entity_load_unchanged('tmgmt_job', $job->tjid);
$this
->assertTrue($job
->isRejected());
}