function OffCanvasDialogTest::testDialog

Same name in other branches
  1. 9 core/modules/system/tests/src/Functional/Ajax/OffCanvasDialogTest.php \Drupal\Tests\system\Functional\Ajax\OffCanvasDialogTest::testDialog()
  2. 8.9.x core/modules/system/tests/src/Functional/Ajax/OffCanvasDialogTest.php \Drupal\Tests\system\Functional\Ajax\OffCanvasDialogTest::testDialog()
  3. 11.x 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) : void {
    // 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);
    $dialog_class = 'ui-dialog-off-canvas ui-dialog-position-' . ($position ?: 'side');
    $off_canvas_expected_response = [
        'command' => 'openDialog',
        'selector' => '#drupal-off-canvas',
        'settings' => NULL,
        'data' => (string) $dialog_contents,
        'dialogOptions' => [
            'classes' => [
                'ui-dialog' => $dialog_class,
                'ui-dialog-content' => 'drupal-off-canvas-reset',
            ],
            'title' => 'AJAX Dialog & contents',
            'modal' => FALSE,
            'autoResize' => FALSE,
            'resizable' => 'w',
            'draggable' => FALSE,
            'drupalAutoButtons' => FALSE,
            'drupalOffCanvasPosition' => $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->assertSame($off_canvas_expected_response, $ajax_result[4], 'off-canvas dialog JSON response matches.');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.