From f4268525e4bcf6fdc88ef180ff8a3fe5be6a66d5 Mon Sep 17 00:00:00 2001 From: nod_ <nod_@598310.no-reply.drupal.org> Date: Thu, 22 Aug 2024 10:45:45 +0200 Subject: [PATCH] Issue #3445469 by pooja_sharma, smustgrave: Add additional test coverage for DialogRenderer::getTitleAsStringable() --- .../modules/ajax_test/ajax_test.routing.yml | 16 +++++++++ .../src/Controller/AjaxTestController.php | 36 +++++++++++++++++++ .../Ajax/DialogTest.php | 7 ++++ 3 files changed, 59 insertions(+) diff --git a/core/modules/system/tests/modules/ajax_test/ajax_test.routing.yml b/core/modules/system/tests/modules/ajax_test/ajax_test.routing.yml index b846939a6e07..f9ca25544ab9 100644 --- a/core/modules/system/tests/modules/ajax_test/ajax_test.routing.yml +++ b/core/modules/system/tests/modules/ajax_test/ajax_test.routing.yml @@ -145,3 +145,19 @@ ajax_test.http_methods.dialog: _controller: Drupal\ajax_test\Controller\AjaxTestController::httpMethodsDialog requirements: _access: 'TRUE' + +ajax_test.link_page.dialog: + path: '/ajax-test/link-page-dialog' + defaults: + _title: 'AJAX link page' + _controller: '\Drupal\ajax_test\Controller\AjaxTestController::linkPageDialog' + requirements: + _access: 'TRUE' + +ajax_test.link_page.dialog_contents: + path: '/ajax-test/link-page-dialog-contents' + defaults: + _title_callback: '\Drupal\ajax_test\Controller\AjaxTestController::linkPageDialogTitle' + _controller: '\Drupal\ajax_test\Controller\AjaxTestController::httpMethodsDialog' + requirements: + _access: 'TRUE' diff --git a/core/modules/system/tests/modules/ajax_test/src/Controller/AjaxTestController.php b/core/modules/system/tests/modules/ajax_test/src/Controller/AjaxTestController.php index b91b37d038e7..fcedd115edb6 100644 --- a/core/modules/system/tests/modules/ajax_test/src/Controller/AjaxTestController.php +++ b/core/modules/system/tests/modules/ajax_test/src/Controller/AjaxTestController.php @@ -457,4 +457,40 @@ public function httpMethodsDialog(): array { return ['#markup' => 'Modal dialog contents']; } + /** + * Provides an Ajax link that open in dialog. + * + * @return array + * The AJAX link. + */ + public function linkPageDialog(): array { + return [ + '#type' => 'link', + '#title' => 'Modal link', + '#url' => Url::fromRoute('ajax_test.link_page.dialog_contents'), + '#attributes' => [ + 'class' => [ + 'use-ajax', + ], + 'data-dialog-type' => 'dialog', + ], + '#attached' => [ + 'library' => [ + 'core/drupal.dialog.ajax', + ], + ], + ]; + } + + /** + * Provides a title to the page. + * + * @return string + * The page title. + */ + public function linkPageDialogTitle(): string { + $title = 'Dialog link page title'; + return $title; + } + } diff --git a/core/tests/Drupal/FunctionalJavascriptTests/Ajax/DialogTest.php b/core/tests/Drupal/FunctionalJavascriptTests/Ajax/DialogTest.php index 7cb0ba26eadd..bdd324020866 100644 --- a/core/tests/Drupal/FunctionalJavascriptTests/Ajax/DialogTest.php +++ b/core/tests/Drupal/FunctionalJavascriptTests/Ajax/DialogTest.php @@ -216,6 +216,13 @@ public function testDialog(): void { $form_title = $dialog_add->find('css', "span.ui-dialog-title:contains('Add contact form')"); $this->assertNotNull($form_title, 'The add form title is as expected.'); + + // Test: dialog link opener with title callback. + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + $this->drupalGet("/ajax-test/link-page-dialog"); + $page->clickLink('Modal link'); + $this->assertEquals('Dialog link page title', $assert_session->waitForElement('css', '.ui-dialog-title')->getText()); } /** -- GitLab