You are here

public function RenderElementTest::testPreRenderAjaxForm in Drupal 9

Same name and namespace in other branches
  1. 8 core/tests/Drupal/Tests/Core/Render/Element/RenderElementTest.php \Drupal\Tests\Core\Render\Element\RenderElementTest::testPreRenderAjaxForm()

@covers ::preRenderAjaxForm

File

core/tests/Drupal/Tests/Core/Render/Element/RenderElementTest.php, line 48

Class

RenderElementTest
@coversDefaultClass \Drupal\Core\Render\Element\RenderElement @group Render

Namespace

Drupal\Tests\Core\Render\Element

Code

public function testPreRenderAjaxForm() {
  $request = Request::create('/test');
  $request->query
    ->set('foo', 'bar');
  $this->requestStack
    ->push($request);
  $prophecy = $this
    ->prophesize('Drupal\\Core\\Routing\\UrlGeneratorInterface');
  $url = '/test?foo=bar&ajax_form=1';
  $prophecy
    ->generateFromRoute('<current>', [], [
    'query' => [
      'foo' => 'bar',
      FormBuilderInterface::AJAX_FORM_REQUEST => TRUE,
    ],
  ], TRUE)
    ->willReturn((new GeneratedUrl())
    ->setCacheContexts([
    'route',
  ])
    ->setGeneratedUrl($url));
  $url_generator = $prophecy
    ->reveal();
  $this->container
    ->set('url_generator', $url_generator);
  $element = [
    '#type' => 'select',
    '#id' => 'test',
    '#ajax' => [
      'wrapper' => 'foo',
      'callback' => 'test-callback',
    ],
  ];
  $element = RenderElement::preRenderAjaxForm($element);
  $this
    ->assertTrue($element['#ajax_processed']);
  $this
    ->assertEquals($url, $element['#attached']['drupalSettings']['ajax']['test']['url']);
}