Commit b8e771ec authored by catch's avatar catch
Browse files

Issue #3248454 by daffie, Spokje, longwave, larowlan, alexpott: [Symfony6] The...

Issue #3248454 by daffie, Spokje, longwave, larowlan, alexpott: [Symfony6] The Drupal\Tests\media_library\Kernel\MediaLibraryStateTest fails for Symfony 5.4
parent 4715bbc9
Loading
Loading
Loading
Loading
+29 −4
Original line number Diff line number Diff line
@@ -101,10 +101,10 @@ public static function fromRequest(Request $request) {
    // all validation runs.
    $state = static::create(
      $query->get('media_library_opener_id'),
      $query->get('media_library_allowed_types', []),
      $query->all('media_library_allowed_types'),
      $query->get('media_library_selected_type'),
      $query->get('media_library_remaining'),
      $query->get('media_library_opener_parameters', [])
      $query->all('media_library_opener_parameters')
    );

    // The request parameters need to contain a valid hash to prevent a
@@ -224,7 +224,7 @@ public function getOpenerId() {
   *   The media type IDs.
   */
  public function getAllowedTypeIds() {
    return $this->get('media_library_allowed_types');
    return $this->all('media_library_allowed_types');
  }

  /**
@@ -268,7 +268,32 @@ public function getAvailableSlots() {
   *   An associative array of all opener-specific parameter values.
   */
  public function getOpenerParameters() {
    return $this->get('media_library_opener_parameters', []);
    return $this->all('media_library_opener_parameters');
  }

  /**
   * Returns the parameters.
   *
   * @param string|null $key
   *   The name of the parameter to return or null to get them all.
   *
   * @return array
   *   An array of parameters.
   *
   * @todo Remove this when Symfony 4 is no longer supported.
   *   See https://www.drupal.org/node/3162981
   */
  public function all(string $key = NULL): array {
    if ($key === NULL) {
      return $this->parameters;
    }

    $value = $this->parameters[$key] ?? [];
    if (!is_array($value)) {
      throw new \UnexpectedValueException(sprintf('Unexpected value for parameter "%s": expecting "array", got "%s".', $key, get_debug_type($value)));
    }

    return $value;
  }

  /**
+8 −1
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@

use Drupal\Core\Cache\Cache;
use Drupal\Core\Cache\CacheableDependencyInterface;
use Drupal\Core\Http\InputBag;
use Drupal\KernelTests\KernelTestBase;
use Drupal\media_library\MediaLibraryState;
use Drupal\Tests\media\Traits\MediaTypeCreationTrait;
@@ -286,7 +287,13 @@ public function testFromRequest(array $query_overrides, $exception_expected) {
      $this->expectException(BadRequestHttpException::class);
      $this->expectExceptionMessage("Invalid media library parameters specified.");
    }
    $state = MediaLibraryState::fromRequest(new Request($query));

    // @todo Remove this when Symfony 4 is no longer supported.
    //   See https://www.drupal.org/node/3162981
    $request = new Request();
    $request->query = new InputBag($query);

    $state = MediaLibraryState::fromRequest($request);
    $this->assertInstanceOf(MediaLibraryState::class, $state);
  }