function TMGMTNodeSourceUIOverviewTestCase::testNodeSourceOverview in Translation Management Tool 7
Tests translating through the content source overview.
File
- sources/
node/ ui/ tmgmt_node_ui.overview.test, line 44
Class
- TMGMTNodeSourceUIOverviewTestCase
- Content Overview Tests
Code
function testNodeSourceOverview() {
// Login as translator to translate nodes.
$this
->loginAsTranslator(array(
'translate content',
'edit any page content',
'create page content',
));
// Create a bunch of english nodes.
$node1 = $this
->drupalCreateNode(array(
'type' => 'page',
'language' => 'en',
'body' => array(
'en' => array(
array(),
),
),
));
$node2 = $this
->drupalCreateNode(array(
'type' => 'page',
'language' => 'en',
'body' => array(
'en' => array(
array(),
),
),
));
$node3 = $this
->drupalCreateNode(array(
'type' => 'page',
'language' => 'en',
'body' => array(
'en' => array(
array(),
),
),
));
$node4 = $this
->drupalCreateNode(array(
'type' => 'page',
'language' => 'en',
'body' => array(
'en' => array(
array(),
),
),
));
// Create a node with an undefined language.
$node5 = $this
->drupalCreateNode(array(
'type' => 'page',
));
// Create a node of an untranslatable content type.
$node6 = $this
->drupalCreateNode(array(
'type' => 'untranslated',
'language' => 'en',
'body' => array(
'en' => array(
array(),
),
),
));
// Go to the overview page and make sure the nodes are there.
$this
->drupalGet('admin/tmgmt/sources/node');
// Make sure that valid nodes are shown.
$this
->assertText($node1->title);
$this
->assertText($node2->title);
$this
->assertText($node3->title);
$this
->assertText($node4->title);
// Nodes without a language must not be shown.
$this
->assertNoText($node5->title);
// Node with a type that is not enabled for translation must not be shown.
$this
->assertNoText($node6->title);
// Now translate them.
$edit = array(
'views_bulk_operations[0]' => TRUE,
'views_bulk_operations[1]' => TRUE,
'views_bulk_operations[2]' => TRUE,
);
$this
->drupalPost(NULL, $edit, t('Request translations'));
// Some assertions on the submit form.
$this
->assertText(t('@title and 2 more (English to ?, Unprocessed)', array(
'@title' => $node1->title,
)));
$this
->assertText($node1->title);
$this
->assertText($node2->title);
$this
->assertText($node3->title);
$this
->assertNoText($node4->title);
// Translate
$edit = array(
'target_language' => 'de',
);
$this
->drupalPost(NULL, $edit, t('Submit to translator'));
$this
->assertNoText(t('The translation of @title to @language is finished and can now be reviewed.', array(
'@title' => $node1->title,
'@language' => t('German'),
)));
$this
->assertText(t('The translation for @title has been accepted.', array(
'@title' => $node1->title,
)));
$this
->assertNoText(t('The translation of @title to @language is finished and can now be reviewed.', array(
'@title' => $node2->title,
'@language' => t('German'),
)));
$this
->assertText(t('The translation for @title has been accepted.', array(
'@title' => $node1->title,
)));
$this
->assertNoText(t('The translation of @title to @language is finished and can now be reviewed.', array(
'@title' => $node3->title,
'@language' => t('German'),
)));
$this
->assertText(t('The translation for @title has been accepted.', array(
'@title' => $node1->title,
)));
// Check the translated node.
$this
->clickLink($node1->title);
$this
->clickLink(t('Translate'));
$this
->assertText('de_' . $node1->title);
// Test for the source list limit set in the views export.
$view = views_get_view('tmgmt_node_source_overview');
$view
->execute_display('default');
$this
->assertEqual($view
->get_items_per_page(), variable_get('tmgmt_source_list_limit', 20));
// Test the missing translation filter.
// Create nodes needed to test the missing translation filter here so that
// VBO order is not affected.
$node_not_translated = $this
->drupalCreateNode(array(
'type' => 'page',
'language' => 'en',
'body' => array(
'en' => array(
array(),
),
),
));
$node_de = $this
->drupalCreateNode(array(
'type' => 'page',
'language' => 'de',
'body' => array(
'de' => array(
array(),
),
),
));
$this
->drupalGet('admin/tmgmt/sources/node');
$this
->assertText($node1->title);
$this
->assertText($node_not_translated->title);
$this
->assertText($node_de->title);
// Submitting the search form will not work. After the form submission the
// page does gets redirected to url without query parameters. So we simply
// access the page with desired query.
$this
->drupalGet('admin/tmgmt/sources/node', array(
'query' => array(
'tmgmt_node_missing_translation' => 'de',
'target_status' => 'untranslated',
),
));
$this
->assertNoText($node1->title);
$this
->assertText($node_not_translated->title);
$this
->assertNoText($node_de->title);
// Update the the translate flag of the translated node and test if it is
// listed among sources with missing translation.
db_update('node')
->fields(array(
'translate' => 1,
))
->condition('nid', $node1->nid)
->execute();
$this
->drupalGet('admin/tmgmt/sources/node', array(
'query' => array(
'tmgmt_node_missing_translation' => 'de',
'target_status' => 'outdated',
),
));
$this
->assertText($node1->title);
$this
->assertNoText($node_not_translated->title);
$this
->assertNoText($node_de->title);
$this
->drupalGet('admin/tmgmt/sources/node', array(
'query' => array(
'tmgmt_node_missing_translation' => 'de',
'target_status' => 'untranslated_or_outdated',
),
));
$this
->assertText($node1->title);
$this
->assertText($node_not_translated->title);
$this
->assertNoText($node_de->title);
}