image = $this->getTestFile('image'); $this->file = $this->getTestFile('text'); } /** * Tests image field formatter Entity Embed Display plugin. */ public function testImageFieldFormatter() { // Ensure that image field formatters are available as plugins. $this->assertAvailableDisplayPlugins($this->image, [ 'entity_reference:entity_reference_label', 'entity_reference:entity_reference_entity_id', 'file:file_default', 'file:file_table', 'file:file_url_plain', 'image:responsive_image', 'image:image', ]); // Ensure that correct form attributes are returned for the image plugin. $form = array(); $form_state = new FormState(); $display = $this->container->get('plugin.manager.entity_embed.display') ->createInstance('image:image', []); $display->setContextValue('entity', $this->image); $conf_form = $display->buildConfigurationForm($form, $form_state); $this->assertIdentical(array_keys($conf_form), array( 'image_style', 'image_link', 'alt', 'title', )); $this->assertIdentical($conf_form['image_style']['#type'], 'select'); $this->assertIdentical((string) $conf_form['image_style']['#title'], 'Image style'); $this->assertIdentical($conf_form['image_link']['#type'], 'select'); $this->assertIdentical((string) $conf_form['image_link']['#title'], 'Link image to'); $this->assertIdentical($conf_form['alt']['#type'], 'textfield'); $this->assertIdentical((string) $conf_form['alt']['#title'], 'Alternate text'); $this->assertIdentical($conf_form['title']['#type'], 'textfield'); $this->assertIdentical((string) $conf_form['title']['#title'], 'Title'); // Test entity embed using 'Image' Entity Embed Display plugin. $alt_text = "This is sample description"; $title = "This is sample title"; $embed_settings = array('image_link' => 'file'); $content = 'This placeholder should not be rendered.'; $settings = array(); $settings['type'] = 'page'; $settings['title'] = 'Test entity embed with image:image'; $settings['body'] = array(array('value' => $content, 'format' => 'custom_format')); $node = $this->drupalCreateNode($settings); $this->drupalGet('node/' . $node->id()); $this->assertRaw($alt_text, 'Alternate text for the embedded image is visible when embed is successful.'); $this->assertNoText(strip_tags($content), 'Placeholder does not appears in the output when embed is successful.'); $this->assertLinkByHref(file_create_url($this->image->getFileUri()), 0, 'Link to the embedded image exists.'); // Embed all three field types in one, to ensure they all render correctly. $content = ''; $content .= ''; $content .= ''; $settings = array(); $settings['type'] = 'page'; $settings['title'] = 'Test node entity embedded first then a file entity'; $settings['body'] = array(array('value' => $content, 'format' => 'custom_format')); $node = $this->drupalCreateNode($settings); $this->drupalGet('node/' . $node->id()); } }