Issue #3248454 by daffie, Spokje, longwave, larowlan, alexpott: [Symfony6] The Drupal\Tests\media_library\Kernel\MediaLibraryStateTest fails for Symfony 5.4

merge-requests/1589/head
catch 2021-12-22 15:28:18 +00:00
parent 4715bbc9c0
commit b8e771ecd5
2 changed files with 37 additions and 5 deletions

View File

@ -101,10 +101,10 @@ class MediaLibraryState extends ParameterBag implements CacheableDependencyInter
// all validation runs. // all validation runs.
$state = static::create( $state = static::create(
$query->get('media_library_opener_id'), $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_selected_type'),
$query->get('media_library_remaining'), $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 // The request parameters need to contain a valid hash to prevent a
@ -224,7 +224,7 @@ class MediaLibraryState extends ParameterBag implements CacheableDependencyInter
* The media type IDs. * The media type IDs.
*/ */
public function getAllowedTypeIds() { public function getAllowedTypeIds() {
return $this->get('media_library_allowed_types'); return $this->all('media_library_allowed_types');
} }
/** /**
@ -268,7 +268,32 @@ class MediaLibraryState extends ParameterBag implements CacheableDependencyInter
* An associative array of all opener-specific parameter values. * An associative array of all opener-specific parameter values.
*/ */
public function getOpenerParameters() { 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;
} }
/** /**

View File

@ -4,6 +4,7 @@ namespace Drupal\Tests\media_library\Kernel;
use Drupal\Core\Cache\Cache; use Drupal\Core\Cache\Cache;
use Drupal\Core\Cache\CacheableDependencyInterface; use Drupal\Core\Cache\CacheableDependencyInterface;
use Drupal\Core\Http\InputBag;
use Drupal\KernelTests\KernelTestBase; use Drupal\KernelTests\KernelTestBase;
use Drupal\media_library\MediaLibraryState; use Drupal\media_library\MediaLibraryState;
use Drupal\Tests\media\Traits\MediaTypeCreationTrait; use Drupal\Tests\media\Traits\MediaTypeCreationTrait;
@ -286,7 +287,13 @@ class MediaLibraryStateTest extends KernelTestBase {
$this->expectException(BadRequestHttpException::class); $this->expectException(BadRequestHttpException::class);
$this->expectExceptionMessage("Invalid media library parameters specified."); $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); $this->assertInstanceOf(MediaLibraryState::class, $state);
} }