function OEmbedIframeControllerTest::testResourcePassedToPreprocess

Same name and namespace in other branches
  1. 10 core/modules/media/tests/src/Kernel/OEmbedIframeControllerTest.php \Drupal\Tests\media\Kernel\OEmbedIframeControllerTest::testResourcePassedToPreprocess()
  2. 11.x 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 <a href="/api/drupal/core%21modules%21media%21src%21Controller%21OEmbedIframeController.php/class/OEmbedIframeController/9" title="Controller which renders an oEmbed resource in a bare page (without blocks)." class="local">\Drupal\media\Controller\OEmbedIframeController</a>

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'));
}

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