mdn-backend / tests /Unit /EmailLayoutRendererTest.php
internationalscholarsprogram's picture
feat(backend): replace backend with peter branch + Emergency Care integration
6773345
Raw
History Blame Contribute Delete
2.15 kB
<?php
namespace Tests\Unit;
use App\Domain\Communications\EmailLayoutRenderer;
use Tests\TestCase;
class EmailLayoutRendererTest extends TestCase
{
public function test_email_layout_wraps_plain_text_body(): void
{
$html = app(EmailLayoutRenderer::class)->bodyToHtml("Thank you.\n\nPay here: https://example.com/pay?token=abc");
$this->assertStringContainsString('<p>Thank you.</p>', $html);
$this->assertStringContainsString('href="https://example.com/pay?token=abc"', $html);
$this->assertStringNotContainsString('<script', strtolower($html));
}
public function test_email_layout_escapes_body_html(): void
{
$html = app(EmailLayoutRenderer::class)->bodyToHtml('<strong>Code</strong>');
$this->assertStringContainsString('&lt;strong&gt;Code&lt;/strong&gt;', $html);
$this->assertStringNotContainsString('<strong>Code</strong>', $html);
}
public function test_email_layout_renders_safe_bold_markers_after_escaping_body(): void
{
$html = app(EmailLayoutRenderer::class)->bodyToHtml('Your code is **123456**. Do not trust **<script>bad</script>**.');
$this->assertStringContainsString('Your code is <strong>123456</strong>.', $html);
$this->assertStringContainsString('<strong>&lt;script&gt;bad&lt;/script&gt;</strong>', $html);
$this->assertStringNotContainsString('<script>bad</script>', $html);
}
public function test_email_layout_has_black_header_and_footer_fallbacks_without_script(): void
{
$template = file_get_contents(resource_path('views/emails/mdn-layout.blade.php'));
$this->assertStringContainsString('background-color: #0b0b0b', $template);
$this->assertStringContainsString('bgcolor="#0b0b0b"', $template);
$this->assertStringContainsString('<header class="email-header" bgcolor="#0b0b0b" style="background-color: #0b0b0b;">', $template);
$this->assertStringContainsString('<footer class="email-footer" bgcolor="#0b0b0b" style="background-color: #0b0b0b;">', $template);
$this->assertStringNotContainsString('<script', strtolower($template));
}
}