MigrateEmbedMediaTokenTestBase.php in Media Migration 8
Namespace
Drupal\Tests\media_migration\FunctionalFile
tests/src/Functional/MigrateEmbedMediaTokenTestBase.phpView source
<?php
namespace Drupal\Tests\media_migration\Functional;
/**
* Base class for testing media token transformations.
*/
abstract class MigrateEmbedMediaTokenTestBase extends MigrateMediaTestBase {
/**
* The CSS selector of the embed media entity.
*
* @var string
*/
protected $embedMediaCssSelector;
/**
* {@inheritdoc}
*/
protected function getExpectedEntities() {
$expected_entities = parent::getExpectedEntities();
if (!array_key_exists('filtered_html', $expected_entities['filter_format'])) {
$expected_entities['filter_format']['filtered_html'] = 'Filtered HTML';
}
return $expected_entities;
}
/**
* Asserts the result of Media Migration's embed media token transform.
*
* @param string|bool[][] $embed_code_html_properties
* The expected attributes of the embed entity HTML tags, keyed by their
* delta (from their order in node with ID '1').
* If a property value is set to TRUE, than this method checks only its
* existence.
* Example with teo expected embed code:
* @code
* array(
* 0 => array(
* 'attribute-with-value' => 'value',
* 'attribute-exists' => TRUE,
* ),
* 1 => array(
* 'attribute-with-value' => 'value',
* 'attribute-exists' => TRUE,
* ),
* )
* @endcode
*/
protected function assertMediaTokenTransform(array $embed_code_html_properties) {
$assert_session = $this
->assertSession();
// Assert that media_filter plugin tokens were transformed to entity_embed
// HTML entities, and the node can be viewed and edited without errors.
$this
->drupalGet('node/1');
$assert_session
->statusCodeEquals(200);
$this
->assertPageTitle('Article with embed image media');
// The embed media' should be rendered properly.
$this
->assertRenderedEmbedMedia();
// Node can be edited.
$this
->drupalGet('node/1/edit');
$assert_session
->statusCodeEquals(200);
// Node body text contains the expected HTML entity of the embed media.
$body_textarea = $assert_session
->fieldExists('body[0][value]');
$body_text = preg_replace('/\\s+/', ' ', $body_textarea
->getValue());
$this
->assertEmbedTokenHtmlTags($body_text, $embed_code_html_properties);
// Hitting save button should not cause errors.
$this
->drupalPostForm(NULL, NULL, 'Save');
$assert_session
->statusCodeEquals(200);
// Url is node/1.
$this
->assertSame($this
->buildUrl('node/1'), $this
->getUrl());
// Embed media is still rendered.
$this
->assertRenderedEmbedMedia();
}
/**
* Ensures that the rendered embed media exists.
*/
protected function assertRenderedEmbedMedia() {
// The embed media's image field should be present.
$this
->assertSession()
->responseNotContains('The referenced media source is missing and needs to be re-embedded.');
$this
->assertNotNull($this
->getSession()
->getPage()
->find('css', $this->embedMediaCssSelector));
}
}
Classes
Name | Description |
---|---|
MigrateEmbedMediaTokenTestBase | Base class for testing media token transformations. |