Files
portal-api/tests/Unit/MailPlaceholdersTest.php
T
2026-10-05 09:30:24 +07:00

40 lines
1.5 KiB
PHP

<?php
namespace Tests\Unit;
use App\Models\Customer;
use App\Support\MailPlaceholders;
use PHPUnit\Framework\TestCase;
class MailPlaceholdersTest extends TestCase
{
public function test_extracts_both_placeholder_styles_without_layout_slot(): void
{
$this->assertSame(
['client_name', 'promo_code', 'due_date'],
MailPlaceholders::extract('Xin chào {{ $client_name }}', '<p>{{promo_code}} {{$due_date}} {{$content}} {{client_name}}</p>'),
);
}
public function test_fill_escapes_html_and_keeps_layout_slot(): void
{
$html = MailPlaceholders::fill('<b>{{$name}}</b>{{$content}}{{missing}}', ['name' => "<script>\nx"]);
$this->assertSame("<b>&lt;script&gt;<br />\nx</b>{{\$content}}", $html);
$this->assertSame('Hi <A&B>', MailPlaceholders::fill('Hi {{ name }}', ['name' => '<A&B>'], escapeHtml: false));
}
public function test_recipient_values_fall_back_to_email_for_external_recipient(): void
{
$external = MailPlaceholders::recipientValues(null, 'a@b.vn');
$this->assertSame('a@b.vn', $external['client_name']);
$this->assertSame('', $external['phone']);
$customer = new Customer(['fullname' => 'Nguyễn An', 'phone' => '0909']);
$values = MailPlaceholders::recipientValues($customer, 'an@x.vn');
$this->assertSame('Nguyễn An', $values['customer_name']);
$this->assertSame('an@x.vn', $values['customer_email']);
$this->assertSame('0909', $values['customer_phone']);
}
}