You are here

public function ResponsiveImageUpdateTest::testPostUpdateDependency in Drupal 8

Tests post-update responsive_image_post_update_dependency().

See also

responsive_image_post_update_dependency()

File

core/modules/responsive_image/tests/src/Functional/Update/ResponsiveImageUpdateTest.php, line 32

Class

ResponsiveImageUpdateTest
Tests responsive image module updates.

Namespace

Drupal\Tests\responsive_image\Functional\Update

Code

public function testPostUpdateDependency() {

  // Installing the 'wide' responsive image style.
  $wide_image_style = Yaml::decode(file_get_contents(__DIR__ . '/../../../../../../profiles/standard/config/optional/responsive_image.styles.wide.yml'));
  $this
    ->config('responsive_image.styles.wide')
    ->setData($wide_image_style)
    ->save(TRUE);

  // Change 'field_image' formatter to a responsive image formatter.
  $options = [
    'type' => 'responsive_image',
    'label' => 'hidden',
    'settings' => [
      'responsive_image_style' => 'wide',
      'image_link' => '',
    ],
    'third_party_settings' => [],
  ];
  $display = $this
    ->config('core.entity_view_display.node.article.default');
  $display
    ->set('content.field_image', $options)
    ->save(TRUE);

  // Check that there's no dependency to 'responsive_image.styles.wide'.
  $dependencies = $display
    ->get('dependencies.config') ?: [];
  $this
    ->assertFalse(in_array('responsive_image.styles.wide', $dependencies));

  // Run updates.
  $this
    ->runUpdates();

  /** @var \Drupal\Core\Entity\Display\EntityViewDisplayInterface $view_display */
  $view_display = EntityViewDisplay::load('node.article.default');
  $dependencies = $view_display
    ->getDependencies() + [
    'config' => [],
  ];

  // Check that post-update added a 'responsive_image.styles.wide' dependency.
  $this
    ->assertTrue(in_array('responsive_image.styles.wide', $dependencies['config']));
}