trait OEmbedTestTrait
Same name in other branches
- 9 core/modules/media/tests/src/Traits/OEmbedTestTrait.php \Drupal\Tests\media\Traits\OEmbedTestTrait
- 8.9.x core/modules/media/tests/src/Traits/OEmbedTestTrait.php \Drupal\Tests\media\Traits\OEmbedTestTrait
- 10 core/modules/media/tests/src/Traits/OEmbedTestTrait.php \Drupal\Tests\media\Traits\OEmbedTestTrait
Contains helper functions for testing oEmbed functionality in isolation.
Hierarchy
- trait \Drupal\Tests\media\Traits\OEmbedTestTrait
6 files declare their use of OEmbedTestTrait
- MediaSourceOEmbedVideoTest.php in core/
modules/ media/ tests/ src/ FunctionalJavascript/ MediaSourceOEmbedVideoTest.php - MediaStandardProfileTest.php in core/
modules/ media/ tests/ src/ FunctionalJavascript/ MediaStandardProfileTest.php - OEmbedFormatterTest.php in core/
modules/ media/ tests/ src/ Functional/ FieldFormatter/ OEmbedFormatterTest.php - ResourceFetcherTest.php in core/
modules/ media/ tests/ src/ Functional/ ResourceFetcherTest.php - UrlResolverTest.php in core/
modules/ media/ tests/ src/ Functional/ UrlResolverTest.php
File
-
core/
modules/ media/ tests/ src/ Traits/ OEmbedTestTrait.php, line 14
Namespace
Drupal\Tests\media\TraitsView source
trait OEmbedTestTrait {
/**
* Returns the relative path to the oEmbed fixtures directory.
*
* @return string
*/
protected function getFixturesDirectory() : string {
return \Drupal::service('extension.list.module')->getPath('media') . '/tests/fixtures/oembed';
}
/**
* Returns the absolute URL of the oEmbed fixtures directory.
*
* @return string
*/
protected function getFixturesUrl() : string {
return $this->baseUrl . '/' . $this->getFixturesDirectory();
}
/**
* Forces Media to use the provider database in the fixtures directory.
*/
protected function useFixtureProviders() {
$this->config('media.settings')
->set('oembed_providers_url', $this->getFixturesUrl() . '/providers.json')
->save();
}
/**
* Configures the HTTP client to always use the fixtures directory.
*
* All requests are carried out relative to the URL of the fixtures directory.
* For example, after calling this method, a request for foobar.html will
* actually request http://test-site/path/to/fixtures/foobar.html.
*/
protected function lockHttpClientToFixtures() {
$this->writeSettings([
'settings' => [
'http_client_config' => [
'base_uri' => (object) [
'value' => $this->getFixturesUrl() . '/',
'required' => TRUE,
],
],
],
]);
// Rebuild the container in case there is already an instantiated service
// that has a dependency on the http_client service.
$this->container
->get('kernel')
->rebuildContainer();
$this->container = $this->container
->get('kernel')
->getContainer();
}
/**
* Ensures that oEmbed provider endpoints use the test resource route.
*
* All oEmbed provider endpoints defined in the fixture providers.json will
* use the media_test_oembed.resource.get route as their URL.
*
* This requires the media_test_oembed module in order to work.
*/
protected function hijackProviderEndpoints() {
$providers = $this->getFixturesDirectory() . '/providers.json';
$providers = file_get_contents($providers);
$providers = Json::decode($providers);
$endpoint_url = Url::fromRoute('media_test_oembed.resource.get')->setAbsolute()
->toString();
/** @var \Drupal\media_test_oembed\ProviderRepository $provider_repository */
$provider_repository = $this->container
->get('media.oembed.provider_repository');
foreach ($providers as &$provider) {
foreach ($provider['endpoints'] as &$endpoint) {
$endpoint['url'] = $endpoint_url;
}
$provider_repository->setProvider(new Provider($provider['provider_name'], $provider['provider_url'], $provider['endpoints']));
}
}
}
Members
Title Sort descending | Modifiers | Object type | Summary |
---|---|---|---|
OEmbedTestTrait::getFixturesDirectory | protected | function | Returns the relative path to the oEmbed fixtures directory. |
OEmbedTestTrait::getFixturesUrl | protected | function | Returns the absolute URL of the oEmbed fixtures directory. |
OEmbedTestTrait::hijackProviderEndpoints | protected | function | Ensures that oEmbed provider endpoints use the test resource route. |
OEmbedTestTrait::lockHttpClientToFixtures | protected | function | Configures the HTTP client to always use the fixtures directory. |
OEmbedTestTrait::useFixtureProviders | protected | function | Forces Media to use the provider database in the fixtures directory. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.