Files
piratepoet/mailpoet/tests/integration/EmailEditor/Engine/Renderer/ContentRenderer/ContentRendererTest.php
2024-03-15 10:28:48 +01:00

56 lines
1.8 KiB
PHP

<?php declare(strict_types = 1);
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer;
use MailPoet\EmailEditor\Engine\EmailEditor;
require_once __DIR__ . '/DummyBlockRenderer.php';
class ContentRendererTest extends \MailPoetTest {
private ContentRenderer $renderer;
private \WP_Post $emailPost;
public function _before(): void {
parent::_before();
$this->diContainer->get(EmailEditor::class)->initialize();
$this->renderer = $this->diContainer->get(ContentRenderer::class);
$this->emailPost = new \WP_Post((object)[
'post_content' => '<!-- wp:paragraph --><p>Hello!</p><!-- /wp:paragraph -->',
]);
}
public function testItRendersContent(): void {
$content = $this->renderer->render(
$this->emailPost
);
verify($content)->stringContainsString('Hello!');
}
public function testItInlinesStylesAddedViaHook(): void {
$stylesCallback = function ($styles) {
return $styles . 'p { color: pink; }';
};
add_filter('mailpoet_email_content_renderer_styles', $stylesCallback);
$rendered = $this->renderer->render($this->emailPost);
$paragraphStyles = $this->getStylesValueForTag($rendered, 'p');
verify($paragraphStyles)->stringContainsString('color:pink');
remove_filter('mailpoet_email_content_renderer_styles', $stylesCallback);
}
public function testItInlinesContentStyles(): void {
$rendered = $this->renderer->render($this->emailPost);
$paragraphStyles = $this->getStylesValueForTag($rendered, 'p');
verify($paragraphStyles)->stringContainsString('margin:0');
verify($paragraphStyles)->stringContainsString('display:block');
}
private function getStylesValueForTag($html, $tag): ?string {
$html = new \WP_HTML_Tag_Processor($html);
if ($html->next_tag($tag)) {
return $html->get_attribute('style');
}
return null;
}
}