You are here

public function OffCanvasDialogTest::testDialog in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/system/tests/src/Functional/Ajax/OffCanvasDialogTest.php \Drupal\Tests\system\Functional\Ajax\OffCanvasDialogTest::testDialog()
  2. 9 core/modules/system/tests/src/Functional/Ajax/OffCanvasDialogTest.php \Drupal\Tests\system\Functional\Ajax\OffCanvasDialogTest::testDialog()

Tests sending AJAX requests to open and manipulate off-canvas dialog.

@dataProvider dialogPosition

File

core/modules/system/tests/src/Functional/Ajax/OffCanvasDialogTest.php, line 34

Class

OffCanvasDialogTest
Performs tests on opening and manipulating dialogs via AJAX commands.

Namespace

Drupal\Tests\system\Functional\Ajax

Code

public function testDialog($position) {

  // Ensure the elements render without notices or exceptions.
  $this
    ->drupalGet('ajax-test/dialog');

  // Set up variables for this test.
  $dialog_renderable = AjaxTestController::dialogContents();
  $dialog_contents = \Drupal::service('renderer')
    ->renderRoot($dialog_renderable);
  $off_canvas_expected_response = [
    'command' => 'openDialog',
    'selector' => '#drupal-off-canvas',
    'settings' => NULL,
    'data' => $dialog_contents,
    'dialogOptions' => [
      'title' => 'AJAX Dialog & contents',
      'modal' => FALSE,
      'autoResize' => FALSE,
      'resizable' => 'w',
      'draggable' => FALSE,
      'drupalAutoButtons' => FALSE,
      'drupalOffCanvasPosition' => $position ?: 'side',
      'buttons' => [],
      'dialogClass' => 'ui-dialog-off-canvas ui-dialog-position-' . ($position ?: 'side'),
      'width' => 300,
    ],
    'effect' => 'fade',
    'speed' => 1000,
  ];

  // Emulate going to the JS version of the page and check the JSON response.
  $wrapper_format = $position && $position !== 'side' ? 'drupal_dialog.off_canvas_' . $position : 'drupal_dialog.off_canvas';
  $ajax_result = $this
    ->drupalGet('ajax-test/dialog-contents', [
    'query' => [
      MainContentViewSubscriber::WRAPPER_FORMAT => $wrapper_format,
    ],
  ]);
  $ajax_result = Json::decode($ajax_result);
  $this
    ->assertEquals($off_canvas_expected_response, $ajax_result[4], 'off-canvas dialog JSON response matches.');
}