MigrateImageStylesTest.php

Same filename and directory in other branches
  1. 9 core/modules/image/tests/src/Kernel/Migrate/d7/MigrateImageStylesTest.php
  2. 8.9.x core/modules/image/tests/src/Kernel/Migrate/d7/MigrateImageStylesTest.php
  3. 10 core/modules/image/tests/src/Kernel/Migrate/d7/MigrateImageStylesTest.php

Namespace

Drupal\Tests\image\Kernel\Migrate\d7

File

core/modules/image/tests/src/Kernel/Migrate/d7/MigrateImageStylesTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\image\Kernel\Migrate\d7;

use Drupal\image\Entity\ImageStyle;
use Drupal\image\ImageStyleInterface;
use Drupal\image\ImageEffectBase;
use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase;

/**
 * Test image styles migration to config entities.
 *
 * @group image
 */
class MigrateImageStylesTest extends MigrateDrupal7TestBase {
  
  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'image',
  ];
  
  /**
   * {@inheritdoc}
   */
  protected function setUp() : void {
    parent::setUp();
    $this->installConfig(static::$modules);
    $this->executeMigration('d7_image_styles');
  }
  
  /**
   * Tests the image styles migration.
   */
  public function testImageStylesMigration() : void {
    $this->assertEntity('custom_image_style_1', "Custom image style 1", [
      'image_scale_and_crop',
      'image_desaturate',
    ], [
      [
        'width' => 55,
        'height' => 55,
        'anchor' => 'center-center',
      ],
      [],
    ]);
    $this->assertEntity('custom_image_style_2', "Custom image style 2", [
      'image_resize',
      'image_rotate',
    ], [
      [
        'width' => 55,
        'height' => 100,
      ],
      [
        'degrees' => 45,
        'bgcolor' => '#FFFFFF',
        'random' => FALSE,
      ],
    ]);
    $this->assertEntity('custom_image_style_3', "Custom image style 3", [
      'image_scale',
      'image_crop',
    ], [
      [
        'width' => 150,
        'height' => NULL,
        'upscale' => FALSE,
      ],
      [
        'width' => 50,
        'height' => 50,
        'anchor' => 'left-top',
      ],
    ]);
  }
  
  /**
   * Asserts various aspects of an ImageStyle entity.
   *
   * @param string $id
   *   The expected image style ID.
   * @param string $label
   *   The expected image style label.
   * @param array $expected_effect_plugins
   *   An array of expected plugins attached to the image style entity.
   * @param array $expected_effect_config
   *   An array of expected configuration for each effect in the image style.
   */
  protected function assertEntity(string $id, string $label, array $expected_effect_plugins, array $expected_effect_config) : void {
    $style = ImageStyle::load($id);
    $this->assertInstanceOf(ImageStyleInterface::class, $style);
    /** @var \Drupal\image\ImageStyleInterface $style */
    $this->assertSame($id, $style->id());
    $this->assertSame($label, $style->label());
    // Check the number of effects associated with the style.
    $effects = $style->getEffects();
    $this->assertSameSize($expected_effect_plugins, $effects);
    $index = 0;
    foreach ($effects as $effect) {
      $this->assertInstanceOf(ImageEffectBase::class, $effect);
      $this->assertSame($expected_effect_plugins[$index], $effect->getPluginId());
      $config = $effect->getConfiguration();
      $this->assertSame($expected_effect_config[$index], $config['data']);
      $index++;
    }
  }

}

Classes

Title Deprecated Summary
MigrateImageStylesTest Test image styles migration to config entities.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.