40 lines
1.5 KiB
PHP
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><script><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']);
|
|
}
|
|
}
|