function ImageThemeFunctionTest::testImageFormatterTheme

Tests usage of the image field formatters.

File

drupal/core/modules/image/lib/Drupal/image/Tests/ImageThemeFunctionTest.php, line 35
Definition of Drupal\image\Tests\ImageThemeFunctionTest.

Class

ImageThemeFunctionTest
Tests image theme functions.

Namespace

Drupal\image\Tests

Code

function testImageFormatterTheme() {

  // Create an image.
  $files = $this
    ->drupalGetTestFiles('image');
  $file = reset($files);
  $original_uri = file_unmanaged_copy($file->uri, 'public://', FILE_EXISTS_RENAME);

  // Create a style.
  $style = entity_create('image_style', array(
    'name' => 'test',
    'label' => 'Test',
  ));
  $style
    ->save();
  $url = image_style_url('test', $original_uri);

  // Test using theme_image_formatter() without an image title, alt text, or
  // link options.
  $path = $this
    ->randomName();
  $element = array(
    '#theme' => 'image_formatter',
    '#image_style' => 'test',
    '#item' => array(
      'uri' => $original_uri,
    ),
    '#path' => array(
      'path' => $path,
    ),
  );
  $rendered_element = render($element);
  $expected_result = '<a href="' . base_path() . $path . '"><img class="image-style-test" src="' . $url . '" alt="" /></a>';
  $this
    ->assertEqual($expected_result, $rendered_element, 'theme_image_formatter() correctly renders without title, alt, or path options.');

  // Link the image to a fragment on the page, and not a full URL.
  $fragment = $this
    ->randomName();
  $element['#path']['path'] = '';
  $element['#path']['options'] = array(
    'external' => TRUE,
    'fragment' => $fragment,
  );
  $rendered_element = render($element);
  $expected_result = '<a href="#' . $fragment . '"><img class="image-style-test" src="' . $url . '" alt="" /></a>';
  $this
    ->assertEqual($expected_result, $rendered_element, 'theme_image_formatter() correctly renders a link fragment.');
}