Verified Commit fc4d59e3 authored by Lee Rowlands's avatar Lee Rowlands
Browse files

Issue #3276965 by guiu.rocafort.ferrer, andregp, roberttabigue, quietone,...

Issue #3276965 by guiu.rocafort.ferrer, andregp, roberttabigue, quietone, rootwork, smustgrave: generate sample values get dimensions wrong when min_resolution is bigger than 600x600

(cherry picked from commit 4578bbd6)
parent 9d43f7ad
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -344,6 +344,17 @@ public static function generateSampleValue(FieldDefinitionInterface $field_defin
    $max_resolution = empty($settings['max_resolution']) ? '600x600' : $settings['max_resolution'];
    $extensions = array_intersect(explode(' ', $settings['file_extensions']), ['png', 'gif', 'jpg', 'jpeg']);
    $extension = array_rand(array_combine($extensions, $extensions));

    $min = explode('x', $min_resolution);
    $max = explode('x', $max_resolution);
    if (intval($min[0]) > intval($max[0])) {
      $max[0] = $min[0];
    }
    if (intval($min[1]) > intval($max[1])) {
      $max[1] = $min[1];
    }
    $max_resolution = "$max[0]x$max[1]";

    // Generate a max of 5 different images.
    if (!isset($images[$extension][$min_resolution][$max_resolution]) || count($images[$extension][$min_resolution][$max_resolution]) <= 5) {
      /** @var \Drupal\Core\File\FileSystemInterface $file_system */
+31 −1
Original line number Diff line number Diff line
@@ -63,6 +63,13 @@ protected function setUp(): void {
      'type' => 'image',
      'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
    ])->save();
    FieldStorageConfig::create([
      'entity_type' => 'entity_test',
      'field_name' => 'image_test_generation',
      'type' => 'image',
      'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
    ])->save();

    FieldConfig::create([
      'entity_type' => 'entity_test',
      'field_name' => 'image_test',
@@ -71,6 +78,15 @@ protected function setUp(): void {
        'file_extensions' => 'jpg',
      ],
    ])->save();
    FieldConfig::create([
      'entity_type' => 'entity_test',
      'field_name' => 'image_test_generation',
      'bundle' => 'entity_test',
      'settings' => [
        'min_resolution' => '800x800',
      ],
    ])->save();

    \Drupal::service('file_system')->copy($this->root . '/core/misc/druplicon.png', 'public://example.jpg');
    $this->image = File::create([
      'uri' => 'public://example.jpg',
@@ -136,11 +152,25 @@ public function testImageItem() {
    $properties = $entity->getFieldDefinition('image_test')->getFieldStorageDefinition()->getPropertyDefinitions();
    $this->assertEquals($expected, array_keys($properties));

    // Test the generateSampleValue() method.
  }

  /**
   * Tests generateSampleItems() method under different resolutions.
   */
  public function testImageItemSampleValueGeneration() {

    // Default behaviour. No resolution configuration.
    $entity = EntityTest::create();
    $entity->image_test->generateSampleItems();
    $this->entityValidateAndSave($entity);
    $this->assertEquals('image/jpeg', $entity->image_test->entity->get('filemime')->value);

    // Max resolution bigger than 600x600.
    $entity->image_test_generation->generateSampleItems();
    $this->entityValidateAndSave($entity);
    $imageItem = $entity->image_test_generation->first()->getValue();
    $this->assertEquals('800', $imageItem['width']);
    $this->assertEquals('800', $imageItem['height']);
  }

  /**