Unverified Commit 58569974 authored by Alex Pott's avatar Alex Pott
Browse files

fix: #2550977 FileItem::generateSampleValue() should generate files with the...

fix: #2550977 FileItem::generateSampleValue() should generate files with the actual allowed extensions

By: mayurjadhav
By: msuthars
By: phenaproxima
By: dww
By: alexpott
By: vsujeetkumar
By: kishor_kolekar
By: vakulrai
By: quietone
By: sanjayk
By: ankithashetty
By: dave reid
By: kristen pol
By: ravi.shankar
By: kim.pepper
By: mohit_aghera
(cherry picked from commit 1ec56df0)
parent 4167c87c
Loading
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -366,8 +366,15 @@ public static function generateSampleValue(FieldDefinitionInterface $field_defin
    // Ensure directory ends with a slash.
    $dirname .= str_ends_with($dirname, '/') ? '' : '/';

    // Determine which extension to use when generating.
    $extension = 'txt';
    if (!empty($settings['file_extensions'])) {
      $extensions = explode(' ', $settings['file_extensions']);
      $extension = array_rand(array_flip($extensions), 1);
    }

    // Generate a file entity.
    $destination = $dirname . $random->name(10) . '.txt';
    $destination = $dirname . $random->name(10, TRUE) . '.' . $extension;
    $data = $random->paragraphs(3);
    /** @var \Drupal\file\FileRepositoryInterface $file_repository */
    $file_repository = \Drupal::service('file.repository');
+16 −0
Original line number Diff line number Diff line
@@ -203,4 +203,20 @@ private function validateFileUriForDirectory(string $file_directory, string $exp
    $this->assertMatchesRegularExpression('#^' . preg_quote($expected_start, '#') . '[^/]+#', $fileUri);
  }

  /**
   * Tests sample value generation with actual allowed file extensions.
   */
  public function testGenerateSampleValue(): void {
    /** @var \Drupal\field\Entity\FieldConfig $field_definition */
    $field_definition = FieldConfig::loadByName('entity_test', 'entity_test', 'file_test');
    $field_definition->setSetting('file_extensions', 'pdf');
    $field_definition->save();

    $class = $field_definition->getItemDefinition()->getClass();
    $value = call_user_func("$class::generateSampleValue", $field_definition);
    /** @var \Drupal\file\FileInterface $file */
    $file = File::load($value['target_id']);
    $this->assertStringEndsWith('.pdf', $file->getFileUri());
  }

}
+7 −0
Original line number Diff line number Diff line
@@ -62,4 +62,11 @@ public function testFileItem(): void {
    parent::testFileItem();
  }

  /**
   * {@inheritdoc}
   */
  public function testGenerateSampleValue(): void {
    $this->markTestSkipped("This is already implemented and tested in base class. We don't require in child class.");
  }

}