1313use Magento \Framework \ZendEscaper ;
1414use PHPUnit \Framework \TestCase ;
1515use Psr \Log \LoggerInterface ;
16+ use Magento \Framework \Translate \Inline \StateInterface ;
1617
1718/**
1819 * \Magento\Framework\Escaper test case
@@ -24,6 +25,11 @@ class EscaperTest extends TestCase
2425 */
2526 protected $ escaper ;
2627
28+ /**
29+ * @var ObjectManager
30+ */
31+ private $ objectManagerHelper ;
32+
2733 /**
2834 * @var ZendEscaper
2935 */
@@ -44,14 +50,14 @@ class EscaperTest extends TestCase
4450 */
4551 protected function setUp (): void
4652 {
47- $ objectManagerHelper = new ObjectManager ($ this );
53+ $ this -> objectManagerHelper = new ObjectManager ($ this );
4854 $ this ->escaper = new Escaper ();
4955 $ this ->zendEscaper = new ZendEscaper ();
50- $ this ->translateInline = $ objectManagerHelper ->getObject (Inline::class);
56+ $ this ->translateInline = $ this -> objectManagerHelper ->getObject (Inline::class);
5157 $ this ->loggerMock = $ this ->getMockForAbstractClass (LoggerInterface::class);
52- $ objectManagerHelper ->setBackwardCompatibleProperty ($ this ->escaper , 'escaper ' , $ this ->zendEscaper );
53- $ objectManagerHelper ->setBackwardCompatibleProperty ($ this ->escaper , 'logger ' , $ this ->loggerMock );
54- $ objectManagerHelper ->setBackwardCompatibleProperty (
58+ $ this -> objectManagerHelper ->setBackwardCompatibleProperty ($ this ->escaper , 'escaper ' , $ this ->zendEscaper );
59+ $ this -> objectManagerHelper ->setBackwardCompatibleProperty ($ this ->escaper , 'logger ' , $ this ->loggerMock );
60+ $ this -> objectManagerHelper ->setBackwardCompatibleProperty (
5561 $ this ->escaper ,
5662 'translateInline ' ,
5763 $ this ->translateInline
@@ -169,6 +175,58 @@ public function testEscapeHtml($data, $expected, $allowedTags = [])
169175 $ this ->assertEquals ($ expected , $ actual );
170176 }
171177
178+ /**
179+ * Tests escapeHtmlAttr method when Inline translate is configured.
180+ *
181+ * @param string $input
182+ * @param string $output
183+ * @return void
184+ * @dataProvider escapeHtmlAttrWithInlineProvider
185+ */
186+ public function testEscapeHtmlAttrWithInline (string $ input , string $ output ): void
187+ {
188+ $ this ->objectManagerHelper ->setBackwardCompatibleProperty (
189+ $ this ->translateInline ,
190+ 'isAllowed ' ,
191+ true
192+ );
193+ $ stateMock = $ this ->createMock (StateInterface::class);
194+ $ stateMock ->method ('isEnabled ' )
195+ ->willReturn (true );
196+ $ this ->objectManagerHelper ->setBackwardCompatibleProperty (
197+ $ this ->translateInline ,
198+ 'state ' ,
199+ $ stateMock
200+ );
201+
202+
203+ $ actual = $ this ->escaper ->escapeHtmlAttr ($ input );
204+ $ this ->assertEquals ($ output , $ actual );
205+ }
206+
207+ /**
208+ * Data provider for escapeHtmlAttrWithInline test.
209+ *
210+ * @return array
211+ */
212+ public function escapeHtmlAttrWithInlineProvider (): array
213+ {
214+ return [
215+ [
216+ '{{{Search entire store here...}}} ' ,
217+ '{{{Search entire store here...}}} ' ,
218+ ],
219+ [
220+ '{{{Product search}}{{Translated to language}}{{themeMagento/Luma}}} ' ,
221+ '{{{Product search}}{{Translated to language}}{{themeMagento/Luma}}} ' ,
222+ ],
223+ [
224+ 'Simple string ' ,
225+ 'Simple string ' ,
226+ ],
227+ ];
228+ }
229+
172230 /**
173231 * @covers \Magento\Framework\Escaper::escapeHtml
174232 * @dataProvider escapeHtmlInvalidDataProvider
0 commit comments