-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Expand file tree
/
Copy pathMentionParserTest.php
More file actions
43 lines (34 loc) · 1.6 KB
/
MentionParserTest.php
File metadata and controls
43 lines (34 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
namespace Tests\Activity;
use BookStack\Activity\Tools\MentionParser;
use Tests\TestCase;
class MentionParserTest extends TestCase
{
public function test_it_extracts_mentions()
{
$parser = new MentionParser();
// Test basic mention extraction
$html = '<p>Hello <a href="/user/5" data-mention-user-id="5">@User</a></p>';
$result = $parser->parseUserIdsFromHtml($html);
$this->assertEquals([5], $result);
// Test multiple mentions
$html = '<p><a data-mention-user-id="1">@Alice</a> and <a data-mention-user-id="2">@Bob</a></p>';
$result = $parser->parseUserIdsFromHtml($html);
$this->assertEquals([1, 2], $result);
// Test filtering out invalid IDs (zero and negative)
$html = '<p><a data-mention-user-id="0">@Invalid</a> <a data-mention-user-id="-5">@Negative</a> <a data-mention-user-id="3">@Valid</a></p>';
$result = $parser->parseUserIdsFromHtml($html);
$this->assertEquals([3], $result);
// Test non-mention links are ignored
$html = '<p><a href="/page/1">Normal Link</a> <a data-mention-user-id="7">@User</a></p>';
$result = $parser->parseUserIdsFromHtml($html);
$this->assertEquals([7], $result);
// Test empty HTML
$result = $parser->parseUserIdsFromHtml('');
$this->assertEquals([], $result);
// Test duplicate user IDs
$html = '<p><a data-mention-user-id="4">@User</a> mentioned <a data-mention-user-id="4">@User</a> again</p>';
$result = $parser->parseUserIdsFromHtml($html);
$this->assertEquals([4], $result);
}
}