|
1 | 1 | <?php
|
2 | 2 |
|
3 |
| - |
4 |
| - |
5 |
| - |
6 | 3 | use App\Open\MentionParser;
|
7 | 4 |
|
8 | 5 | test('it replaces mention elements with their corresponding values', function () {
|
9 |
| - |
10 | 6 | $content = '<p>Hello <span mention mention-field-id="123">Placeholder</span></p>';
|
11 |
| - |
12 |
| - $data = [['nf_id' => '123', 'value' => 'World']]; |
13 |
| - |
14 |
| - |
15 |
| - |
| 7 | + $data = [['id' => '123', 'value' => 'World']]; |
16 | 8 |
|
17 | 9 | $parser = new MentionParser($content, $data);
|
18 |
| - |
19 | 10 | $result = $parser->parse();
|
20 | 11 |
|
21 |
| - |
22 |
| - |
23 |
| - |
24 | 12 | expect($result)->toBe('<p>Hello World</p>');
|
25 |
| - |
26 | 13 | });
|
27 | 14 |
|
28 |
| - |
29 |
| - |
30 |
| - |
31 | 15 | test('it handles multiple mentions', function () {
|
32 |
| - |
33 | 16 | $content = '<p><span mention mention-field-id="123">Name</span> is <span mention mention-field-id="456">Age</span> years old</p>';
|
34 |
| - |
35 | 17 | $data = [
|
36 |
| - |
37 |
| - ['nf_id' => '123', 'value' => 'John'], |
38 |
| - |
39 |
| - ['nf_id' => '456', 'value' => 30], |
40 |
| - |
| 18 | + ['id' => '123', 'value' => 'John'], |
| 19 | + ['id' => '456', 'value' => 30], |
41 | 20 | ];
|
42 | 21 |
|
43 |
| - |
44 |
| - |
45 |
| - |
46 | 22 | $parser = new MentionParser($content, $data);
|
47 |
| - |
48 | 23 | $result = $parser->parse();
|
49 | 24 |
|
50 |
| - |
51 |
| - |
52 |
| - |
53 | 25 | expect($result)->toBe('<p>John is 30 years old</p>');
|
54 |
| - |
55 | 26 | });
|
56 | 27 |
|
57 |
| - |
58 |
| - |
59 |
| - |
60 | 28 | test('it uses fallback when value is not found', function () {
|
61 |
| - |
62 | 29 | $content = '<p>Hello <span mention mention-field-id="123" mention-fallback="Friend">Placeholder</span></p>';
|
63 |
| - |
64 | 30 | $data = [];
|
65 | 31 |
|
66 |
| - |
67 |
| - |
68 |
| - |
69 | 32 | $parser = new MentionParser($content, $data);
|
70 |
| - |
71 | 33 | $result = $parser->parse();
|
72 | 34 |
|
73 |
| - |
74 |
| - |
75 |
| - |
76 | 35 | expect($result)->toBe('<p>Hello Friend</p>');
|
77 |
| - |
78 | 36 | });
|
79 | 37 |
|
80 |
| - |
81 |
| - |
82 |
| - |
83 | 38 | test('it removes mention element when no value and no fallback', function () {
|
84 |
| - |
85 | 39 | $content = '<p>Hello <span mention mention-field-id="123">Placeholder</span></p>';
|
86 |
| - |
87 | 40 | $data = [];
|
88 | 41 |
|
89 |
| - |
90 |
| - |
91 |
| - |
92 | 42 | $parser = new MentionParser($content, $data);
|
93 |
| - |
94 | 43 | $result = $parser->parse();
|
95 | 44 |
|
96 |
| - |
97 |
| - |
98 |
| - |
99 | 45 | expect($result)->toBe('<p>Hello </p>');
|
100 |
| - |
101 | 46 | });
|
102 | 47 |
|
103 |
| - |
104 |
| - |
105 |
| - |
106 | 48 | test('it handles array values', function () {
|
107 |
| - |
108 | 49 | $content = '<p>Tags: <span mention mention-field-id="123">Placeholder</span></p>';
|
109 |
| - |
110 |
| - $data = [['nf_id' => '123', 'value' => ['PHP', 'Laravel', 'Testing']]]; |
111 |
| - |
112 |
| - |
113 |
| - |
| 50 | + $data = [['id' => '123', 'value' => ['PHP', 'Laravel', 'Testing']]]; |
114 | 51 |
|
115 | 52 | $parser = new MentionParser($content, $data);
|
116 |
| - |
117 | 53 | $result = $parser->parse();
|
118 | 54 |
|
119 |
| - |
120 |
| - |
121 |
| - |
122 | 55 | expect($result)->toBe('<p>Tags: PHP, Laravel, Testing</p>');
|
123 |
| - |
124 | 56 | });
|
125 | 57 |
|
126 |
| - |
127 |
| - |
128 |
| - |
129 | 58 | test('it preserves HTML structure', function () {
|
130 |
| - |
131 | 59 | $content = '<div><p>Hello <span mention mention-field-id="123">Placeholder</span></p><p>How are you?</p></div>';
|
132 |
| - |
133 |
| - $data = [['nf_id' => '123', 'value' => 'World']]; |
134 |
| - |
135 |
| - |
136 |
| - |
| 60 | + $data = [['id' => '123', 'value' => 'World']]; |
137 | 61 |
|
138 | 62 | $parser = new MentionParser($content, $data);
|
139 |
| - |
140 | 63 | $result = $parser->parse();
|
141 | 64 |
|
142 |
| - |
143 |
| - |
144 |
| - |
145 | 65 | expect($result)->toBe('<div><p>Hello World</p><p>How are you?</p></div>');
|
146 |
| - |
147 | 66 | });
|
148 | 67 |
|
149 |
| - |
150 |
| - |
151 |
| - |
152 | 68 | test('it handles UTF-8 characters', function () {
|
153 |
| - |
154 | 69 | $content = '<p>こんにちは <span mention mention-field-id="123">Placeholder</span></p>';
|
155 |
| - |
156 |
| - $data = [['nf_id' => '123', 'value' => '世界']]; |
157 |
| - |
158 |
| - |
159 |
| - |
| 70 | + $data = [['id' => '123', 'value' => '世界']]; |
160 | 71 |
|
161 | 72 | $parser = new MentionParser($content, $data);
|
162 |
| - |
163 | 73 | $result = $parser->parse();
|
164 | 74 |
|
165 |
| - |
166 |
| - |
167 |
| - |
168 | 75 | expect($result)->toBe('<p>こんにちは 世界</p>');
|
169 |
| - |
170 | 76 | });
|
171 | 77 |
|
172 |
| - |
173 |
| - |
174 |
| - |
175 | 78 | test('it handles content without surrounding paragraph tags', function () {
|
176 |
| - |
177 | 79 | $content = 'some text <span contenteditable="false" mention="" mention-field-id="123" mention-field-name="Post excerpt" mention-fallback="">Post excerpt</span> dewde';
|
178 |
| - |
179 |
| - $data = [['nf_id' => '123', 'value' => 'replaced text']]; |
180 |
| - |
181 |
| - |
182 |
| - |
| 80 | + $data = [['id' => '123', 'value' => 'replaced text']]; |
183 | 81 |
|
184 | 82 | $parser = new MentionParser($content, $data);
|
185 |
| - |
186 | 83 | $result = $parser->parse();
|
187 | 84 |
|
188 |
| - |
189 |
| - |
190 |
| - |
191 | 85 | expect($result)->toBe('some text replaced text dewde');
|
192 |
| - |
193 | 86 | });
|
0 commit comments