Issue #3412316 by kunal.sachdev, tim.plunkett, sidharth_soman, smustgrave: Use 'search.view' instead of 'search.plugins:' . $default for base route in SearchLocalTask::getDerivativeDefinitions()

merge-requests/5836/merge
Dave Long 2024-03-02 23:26:24 +00:00
parent 7cb81a403b
commit 0b3326d3cd
No known key found for this signature in database
GPG Key ID: ED52AE211E142771
2 changed files with 16 additions and 2 deletions

View File

@ -44,13 +44,13 @@ class SearchLocalTask extends DeriverBase implements ContainerDeriverInterface {
public function getDerivativeDefinitions($base_plugin_definition) {
$this->derivatives = [];
if ($default = $this->searchPageRepository->getDefaultSearchPage()) {
if ($this->searchPageRepository->getDefaultSearchPage()) {
$active_search_pages = $this->searchPageRepository->getActiveSearchPages();
foreach ($this->searchPageRepository->sortSearchPages($active_search_pages) as $entity_id => $entity) {
$this->derivatives[$entity_id] = [
'title' => $entity->label(),
'route_name' => 'search.view_' . $entity_id,
'base_route' => 'search.plugins:' . $default,
'base_route' => 'search.view',
'weight' => $entity->getWeight(),
];
}

View File

@ -4,6 +4,8 @@ namespace Drupal\Tests\search\Kernel;
use Drupal\KernelTests\Core\Config\ConfigEntityValidationTestBase;
use Drupal\search\Entity\SearchPage;
use Drupal\search\Plugin\Derivative\SearchLocalTask;
use Drupal\search\SearchPageRepository;
/**
* Tests validation of search_page entities.
@ -41,4 +43,16 @@ class SearchPageValidationTest extends ConfigEntityValidationTestBase {
]);
}
/**
* Test that the base route stored in definition is correct.
*/
public function testBaseRouteIsValid(): void {
$search_page_repository = new SearchPageRepository(\Drupal::configFactory(), \Drupal::entityTypeManager());
$search_local_task = new SearchLocalTask($search_page_repository);
$definitions = $search_local_task->getDerivativeDefinitions([]);
$route_provider = \Drupal::service('router.route_provider');
$base_route = $route_provider->getRouteByName($definitions['test']['base_route']);
$this->assertSame($base_route, $route_provider->getRouteByName('search.view'));
}
}