<?php

namespace Tests\Unit\Models;

use App\Models\MessageTemplate;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Tests\Feature\Concerns\BuildsFeatureData;
use Tests\TestCase;

class MessageTemplateModelTest extends TestCase
{
    use BuildsFeatureData;
    use DatabaseTransactions;

    public function test_get_by_type_returns_template_or_null(): void
    {
        $template = $this->createMessageTemplate([
            'type' => 'unit_test_template',
            'label' => 'Template Unit Test',
        ]);

        $found = MessageTemplate::getByType('unit_test_template');

        $this->assertNotNull($found);
        $this->assertSame($template->id, $found->id);
        $this->assertNull(MessageTemplate::getByType('template_tidak_ada'));
    }

    public function test_render_replaces_variables_and_decodes_html_encoded_braces(): void
    {
        $template = 'Halo &#123;applicant_name&#125;, selamat datang di {site_name}.';

        $result = MessageTemplate::render($template, [
            'applicant_name' => 'Budi',
            'site_name' => 'Bursa Kerja',
        ]);

        $this->assertSame('Halo Budi, selamat datang di Bursa Kerja.', $result);
    }
}
