menu = entity_create('menu', array(
'id' => 'menu_name',
'label' => 'Label',
'description' => 'Description text',
));
$this->menu->save();
}
/**
* Tests entity reference field formatters.
*/
public function testEntityReferenceFieldFormatter() {
// Ensure that entity reference field formatters are available as plugins.
$this->assertAvailableDisplayPlugins($this->node, [
'entity_reference:entity_reference_label',
'entity_reference:entity_reference_entity_id',
'view_mode:node.full',
'view_mode:node.rss',
'view_mode:node.search_index',
'view_mode:node.search_result',
'view_mode:node.teaser',
]);
$this->container->get('config.factory')->getEditable('entity_embed.settings')
->set('rendered_entity_mode', TRUE)->save();
$this->container->get('plugin.manager.entity_embed.display')->clearCachedDefinitions();
$this->assertAvailableDisplayPlugins($this->node, [
'entity_reference:entity_reference_label',
'entity_reference:entity_reference_entity_id',
'entity_reference:entity_reference_entity_view',
]);
// Ensure that correct form attributes are returned for
// 'entity_reference:entity_reference_entity_id' plugin.
$form = array();
$form_state = new FormState();
$display = $this->container->get('plugin.manager.entity_embed.display')->createInstance('entity_reference:entity_reference_entity_id', array());
$display->setContextValue('entity', $this->node);
$conf_form = $display->buildConfigurationForm($form, $form_state);
$this->assertIdentical(array_keys($conf_form), array());
// Ensure that correct form attributes are returned for
// 'entity_reference:entity_reference_entity_view' plugin.
$form = array();
$form_state = new FormState();
$display = $this->container->get('plugin.manager.entity_embed.display')->createInstance('entity_reference:entity_reference_entity_view', array());
$display->setContextValue('entity', $this->node);
$conf_form = $display->buildConfigurationForm($form, $form_state);
$this->assertIdentical($conf_form['view_mode']['#type'], 'select');
$this->assertIdentical((string) $conf_form['view_mode']['#title'], 'View mode');
// Ensure that correct form attributes are returned for
// 'entity_reference:entity_reference_label' plugin.
$form = array();
$form_state = new FormState();
$display = $this->container->get('plugin.manager.entity_embed.display')->createInstance('entity_reference:entity_reference_label', array());
$display->setContextValue('entity', $this->node);
$conf_form = $display->buildConfigurationForm($form, $form_state);
$this->assertIdentical(array_keys($conf_form), array('link'));
$this->assertIdentical($conf_form['link']['#type'], 'checkbox');
$this->assertIdentical((string) $conf_form['link']['#title'], 'Link label to the referenced entity');
// Ensure that 'Rendered Entity' plugin is not available for an entity not
// having a view controller.
$plugin_options = $this->container->get('plugin.manager.entity_embed.display')->getDefinitionOptionsForEntity($this->menu);
$this->assertFalse(array_key_exists('entity_reference:entity_reference_entity_view', $plugin_options), "The 'Rendered entity' plugin is not available.");
}
/**
* Tests filter using entity reference Entity Embed Display plugins.
*/
public function testFilterEntityReferencePlugins() {
// Test 'Label' Entity Embed Display plugin.
$content = 'This placeholder should not be rendered.';
$settings = array();
$settings['type'] = 'page';
$settings['title'] = 'Test entity_reference:entity_reference_label Entity Embed Display plugin';
$settings['body'] = array(array('value' => $content, 'format' => 'custom_format'));
$node = $this->drupalCreateNode($settings);
$this->drupalGet('node/' . $node->id());
$this->assertText($this->node->title->value, 'Title of the embedded node exists in page.');
$this->assertNoText($this->node->body->value, 'Body of embedded node does not exists in page.');
$this->assertNoText(strip_tags($content), 'Placeholder does not appears in the output when embed is successful.');
$this->assertLinkByHref('node/' . $this->node->id(), 0, 'Link to the embedded node exists.');
// Test 'Entity ID' Entity Embed Display plugin.
$content = 'This placeholder should not be rendered.';
$settings = array();
$settings['type'] = 'page';
$settings['title'] = 'Test entity_reference:entity_reference_entity_id Entity Embed Display plugin';
$settings['body'] = array(array('value' => $content, 'format' => 'custom_format'));
$node = $this->drupalCreateNode($settings);
$this->drupalGet('node/' . $node->id());
$this->assertText($this->node->id(), 'ID of the embedded node exists in page.');
$this->assertNoText($this->node->title->value, 'Title of the embedded node does not exists in page.');
$this->assertNoText($this->node->body->value, 'Body of embedded node does not exists in page.');
$this->assertNoText(strip_tags($content), 'Placeholder does not appears in the output when embed is successful.');
$this->assertNoLinkByHref('node/' . $this->node->id(), 'Link to the embedded node does not exists.');
// Test 'Rendered entity' Entity Embed Display plugin.
$content = 'This placeholder should not be rendered.';
$settings = array();
$settings['type'] = 'page';
$settings['title'] = 'Test entity_reference:entity_reference_label Entity Embed Display plugin';
$settings['body'] = array(array('value' => $content, 'format' => 'custom_format'));
$node = $this->drupalCreateNode($settings);
$this->drupalGet('node/' . $node->id());
$this->assertText($this->node->body->value, 'Body of embedded node does not exists in page.');
$this->assertNoText(strip_tags($content), 'Placeholder does not appears in the output when embed is successful.');
}
}