You are here

public function OEmbedIframeControllerTest::testResourcePassedToPreprocess in Drupal 10

Same name and namespace in other branches
  1. 9 core/modules/media/tests/src/Kernel/OEmbedIframeControllerTest.php \Drupal\Tests\media\Kernel\OEmbedIframeControllerTest::testResourcePassedToPreprocess()

Tests that resources can be used in media_oembed_iframe preprocess.

@covers ::render

See also

media_test_oembed_preprocess_media_oembed_iframe()

File

core/modules/media/tests/src/Kernel/OEmbedIframeControllerTest.php, line 74

Class

OEmbedIframeControllerTest
@coversDefaultClass \Drupal\media\Controller\OEmbedIframeController

Namespace

Drupal\Tests\media\Kernel

Code

public function testResourcePassedToPreprocess() {
  $hash = $this->container
    ->get('media.oembed.iframe_url_helper')
    ->getHash('', 0, 0);
  $url_resolver = $this
    ->prophesize('\\Drupal\\media\\OEmbed\\UrlResolverInterface');
  $resource_fetcher = $this
    ->prophesize('\\Drupal\\media\\OEmbed\\ResourceFetcherInterface');
  $provider = new Provider('YouTube', 'https://youtube.com', [
    [
      'url' => 'https://youtube.com/foo',
    ],
  ]);
  $resource = Resource::rich('<iframe src="https://youtube.com/watch?feature=oembed"></iframe>', 320, 240, $provider);
  $resource_fetcher
    ->fetchResource(Argument::cetera())
    ->willReturn($resource);
  $this->container
    ->set('media.oembed.url_resolver', $url_resolver
    ->reveal());
  $this->container
    ->set('media.oembed.resource_fetcher', $resource_fetcher
    ->reveal());
  $request = new Request([
    'url' => '',
    'hash' => $hash,
  ]);
  $response = $this->container
    ->get('html_response.attachments_processor')
    ->processAttachments(OEmbedIframeController::create($this->container)
    ->render($request));
  assert($response instanceof HtmlResponse);
  $content = $response
    ->getContent();

  // This query parameter is added by
  // media_test_oembed_preprocess_media_oembed_iframe() for YouTube videos.
  $this
    ->assertStringContainsString('&pasta=rigatoni', $content);
  $this
    ->assertStringContainsString('test.css', $content);
  $this
    ->assertContains('yo_there', $response
    ->getCacheableMetadata()
    ->getCacheTags());
  $this
    ->assertStringContainsString('text/html', $response->headers
    ->get('Content-Type'));
}