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.
$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 @@ class MediaLibraryState extends ParameterBag implements CacheableDependencyInter
* 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 @@ class MediaLibraryState extends ParameterBag implements CacheableDependencyInter
* 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;
}
/**

View File

@ -4,6 +4,7 @@ namespace Drupal\Tests\media_library\Kernel;
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 @@ class MediaLibraryStateTest extends KernelTestBase {
$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);
}