function PanelizerNodeContentTranslationTest::testContentTranslation in Panelizer 7.3
Verify that when a node is translated the customized Panelizer display is cloned to the new node.
File
- tests/
panelizer.node_content_translation.test, line 64 - Test the content translation integration for Panelizer.
Class
Code
function testContentTranslation() {
$entity_type = 'node';
// The content type that is being tested.
$content_type = 'page';
// The view mode that is being tested.
$view_mode = 'page_manager';
// The text that will be checked for on the page.
$sample_text = 'Hello world';
// @todo Enable a second language.
// @todo Allow the content type to be translated.
// Ensure node_view panel page is enabled for full page override to work.
$this
->simpleEnablePage($entity_type . '_view');
// Enable Panelizer for this content type; receive an updated handler so
// that it can be used later.
$handler = $this
->togglePanelizer($entity_type, $content_type, 'page_manager', 1, 1, 1);
// Create a node with the English language; it will inherit the default
// Panelizer display.
$options = array(
'title' => 'English test page',
'type' => $content_type,
'language' => 'en',
);
$node = $this
->drupalCreateNode($options);
$this
->verbose(print_r($node, TRUE));
// Check that the post can been panelized.
$this
->drupalGet('node/' . $node->nid);
$this
->assertResponse(200);
$this
->assertLink('Customize display', 0, 'The customize display link appears on the page');
$this
->assertLinkByHref('node/' . $node->nid . '/panelizer', 0, 'A link to customize the node appears on the page');
// Check that the view mode can be panelized.
$this
->drupalGet('node/' . $node->nid . '/panelizer/' . $view_mode . '/content');
$this
->assertResponse(200);
$this
->assertLink(t('Full page override'), 0, 'The panelize link for the "Full page override" view mode appears on the page');
// Load the default display for this node.
$panelizer = new StdClass();
$panelizer->name = NULL;
$panelizer->entity_type = 'node';
$panelizer->entity_id = $node->nid;
$panelizer->view_mode = $view_mode;
$panelizer->display_is_modified = TRUE;
$panelizer->display = $handler
->get_default_display($content_type, $view_mode);
$panelizer->did = $panelizer->display->did;
$node->panelizer[$view_mode] = $panelizer;
$this
->verbose('<pre>' . print_r($node, TRUE) . '</pre>');
// Customize the page.
$this
->addTestPane($node->panelizer[$view_mode]->display, $sample_text);
// Save the node to update the display. Use the handler directly otherwise
// the in-memory handler object won't have the updated settings; see above.
$handler
->hook_entity_update($node);
$this
->verbose('<pre>' . print_r($node, TRUE) . '</pre>');
$node = node_load($node->nid);
$this
->verbose('<pre>' . print_r($node, TRUE) . '</pre>');
// Confirm the node view page shows the test string.
$this
->drupalGet('node/' . $node->nid);
$this
->assertResponse(200);
$this
->assertText($sample_text);
// Confirm the node has a custom Panelizer config.
$this
->assertTrue(isset($node->panelizer[$view_mode]));
$this
->assertTrue(!empty($node->panelizer[$view_mode]->did));
// Translate the node into French.
$this
->drupalGet('node/add/page', array(
'query' => array(
'translation' => $node->nid,
'target' => 'fr',
),
));
$args = array(
'title' => 'French test page',
);
$this
->drupalPost(NULL, $args, t('Save'));
// Confirm that the page saved correctly.
$t_args = array(
'@type' => t('Basic page'),
'%title' => $args['title'],
);
$this
->assertText(strip_tags(t('@type %title has been created.', $t_args)));
// Load the translated node.
$node_fr = $this
->drupalGetNodeByTitle($args['title']);
$this
->verbose('<pre>' . print_r($node_fr, TRUE) . '</pre>');
// Load the node page.
$this
->drupalGet('node/' . $node_fr->nid);
$this
->assertResponse(200);
$this
->assertText($sample_text);
// Confirm that the translated node has a copy of the display, i.e the
// same contents but a different did.
$this
->assertTrue(isset($node_fr->panelizer[$view_mode]));
$this
->assertTrue(!empty($node_fr->panelizer[$view_mode]->did));
}