X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fentity_embed%2Fsrc%2FTests%2FEntityReferenceFieldFormatterTest.php;fp=web%2Fmodules%2Fcontrib%2Fentity_embed%2Fsrc%2FTests%2FEntityReferenceFieldFormatterTest.php;h=916578798a14b4eba7e029ce5a7861dd743dab79;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/modules/contrib/entity_embed/src/Tests/EntityReferenceFieldFormatterTest.php b/web/modules/contrib/entity_embed/src/Tests/EntityReferenceFieldFormatterTest.php new file mode 100644 index 000000000..916578798 --- /dev/null +++ b/web/modules/contrib/entity_embed/src/Tests/EntityReferenceFieldFormatterTest.php @@ -0,0 +1,140 @@ +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.'); + } + +}