Hello Placeholder

'; $data = [['id' => '123', 'value' => 'World']]; $parser = new MentionParser($content, $data); $result = $parser->parse(); expect($result)->toBe('

Hello World

'); }); test('it handles multiple mentions', function () { $content = '

Name is Age years old

'; $data = [ ['id' => '123', 'value' => 'John'], ['id' => '456', 'value' => 30], ]; $parser = new MentionParser($content, $data); $result = $parser->parse(); expect($result)->toBe('

John is 30 years old

'); }); test('it uses fallback when value is not found', function () { $content = '

Hello Placeholder

'; $data = []; $parser = new MentionParser($content, $data); $result = $parser->parse(); expect($result)->toBe('

Hello Friend

'); }); test('it removes mention element when no value and no fallback', function () { $content = '

Hello Placeholder

'; $data = []; $parser = new MentionParser($content, $data); $result = $parser->parse(); expect($result)->toBe('

Hello

'); }); test('it handles array values', function () { $content = '

Tags: Placeholder

'; $data = [['id' => '123', 'value' => ['PHP', 'Laravel', 'Testing']]]; $parser = new MentionParser($content, $data); $result = $parser->parse(); expect($result)->toBe('

Tags: PHP, Laravel, Testing

'); }); test('it preserves HTML structure', function () { $content = '

Hello Placeholder

How are you?

'; $data = [['id' => '123', 'value' => 'World']]; $parser = new MentionParser($content, $data); $result = $parser->parse(); expect($result)->toBe('

Hello World

How are you?

'); }); test('it handles UTF-8 characters', function () { $content = '

こんにちは Placeholder

'; $data = [['id' => '123', 'value' => '世界']]; $parser = new MentionParser($content, $data); $result = $parser->parse(); expect($result)->toBe('

こんにちは 世界

'); }); test('it handles content without surrounding paragraph tags', function () { $content = 'some text Post excerpt dewde'; $data = [['id' => '123', 'value' => 'replaced text']]; $parser = new MentionParser($content, $data); $result = $parser->parse(); expect($result)->toBe('some text replaced text dewde'); });