12
12
* @covers \MensBeam\HTML\DOMParser
13
13
*/
14
14
class TestDOMParser extends \PHPUnit \Framework \TestCase {
15
+ protected $ p ;
16
+
17
+ public function setUp (): void {
18
+ $ this ->p = \Phake::partialMock (DOMParser::class);
19
+ \Phake::when ($ this ->p )->useNewParsers ->thenReturn (false );
20
+ }
21
+
15
22
/** @dataProvider provideDocuments */
16
23
public function testParseADocument (string $ input , string $ type , string $ exp ): void {
17
- $ p = new DOMParser ;
18
- $ document = $ p ->parseFromString ($ input , $ type );
24
+ $ document = $ this ->p ->parseFromString ($ input , $ type );
19
25
$ this ->assertSame ($ exp , $ document ->documentElement ->textContent );
20
- $ this ->assertSame ("html " , $ document ->documentElement ->tagName );
26
+ $ this ->assertSame ("html " , $ document ->documentElement ->localName );
21
27
}
22
28
23
29
public function provideDocuments (): iterable {
@@ -27,7 +33,7 @@ public function provideDocuments(): iterable {
27
33
};
28
34
return [
29
35
["Test " , "text/html " , "Test " ],
30
- ["Ol \xE9" , "text/html " , "Ol \u{E9}" ],
36
+ ["Ol \u{E9}" , "text/html " , "Ol \u{E9}" ],
31
37
["Ol \u{E9}" , "text/html;charset=utf8 " , "Ol \u{E9}" ],
32
38
["<meta charset=utf8>Ol \u{E9}" , "text/html " , "Ol \u{E9}" ],
33
39
["<html>Test</html> " , "text/xml " , "Test " ],
@@ -37,10 +43,6 @@ public function provideDocuments(): iterable {
37
43
["<?xml version='1.0' encoding='windows-1252'?><html>Ol \xE9</html> " , "text/xml " , "Ol \u{E9}" ],
38
44
["<html>Ol \xE9</html> " , "text/xml;charset=windows-1252 " , "Ol \u{E9}" ],
39
45
["<html>Ol \u{E9}</html> " , "text/xml;charset=UTF-8 " , "Ol \u{E9}" ],
40
- ["<?xml version='1.1' encoding='windows-1252'?><html>Ol \u{E9}</html> " , "text/xml;charset=UTF-8 " , "Ol \u{E9}" ],
41
- ["<?xml version='1.1' encoding='utf8'?><html>Ol \u{E9}</html> " , "text/xml;charset=UTF-8 " , "Ol \u{E9}" ],
42
- ["<?xml version='1.1'?><html>Ol \u{E9}</html> " , "text/xml;charset=UTF-8 " , "Ol \u{E9}" ],
43
- ["<?xml version='1.1' ?><html>Ol \u{E9}</html> " , "text/xml;charset=UTF-8 " , "Ol \u{E9}" ],
44
46
["<?xml version='1.0' standalone='yes'?><html>Ol \u{E9}</html> " , "text/xml;charset=UTF-8 " , "Ol \u{E9}" ],
45
47
["<?xml version='1.0' standalone='yes'?><html>Ol \xE9</html> " , "text/xml;charset=windows-1252 " , "Ol \u{E9}" ],
46
48
["<?xml version='1.0'?><html>Ol \u{E9}</html> " , "text/xml;charset=bogus " , "Ol \u{E9}" ],
@@ -59,33 +61,29 @@ public function provideDocuments(): iterable {
59
61
60
62
public function testFailToParseADocument (): void {
61
63
$ in = "<html>Test</html><!--Test-->Test " ;
62
- $ p = new DOMParser ;
63
- $ d = $ p ->parseFromString ($ in , "text/xml " );
64
- $ this ->assertSame ("parsererror " , $ d ->documentElement ->tagName );
64
+ $ d = $ this ->p ->parseFromString ($ in , "text/xml " );
65
+ $ this ->assertSame ("parsererror " , $ d ->documentElement ->localName );
65
66
$ this ->assertSame ("http://www.mozilla.org/newlayout/xml/parsererror.xml " , $ d ->documentElement ->namespaceURI );
66
67
$ this ->assertNotSame ("" , trim ($ d ->documentElement ->textContent ));
67
68
}
68
69
69
70
public function testParseWithIncorrectType (): void {
70
71
$ in = "<html>Ol \u{E9}</html> " ;
71
- $ p = new DOMParser ;
72
72
$ this ->expectException (\InvalidArgumentException::class);
73
- $ p ->parseFromString ($ in , "text/plain " );
73
+ $ this -> p ->parseFromString ($ in , "text/plain " );
74
74
}
75
75
76
76
public function testParseWithInvalidEncodingInHeader (): void {
77
77
$ in = "<html>Test</html> " ;
78
- $ p = new DOMParser ;
79
- $ d = $ p ->parseFromString ($ in , "text/xml;charset=csiso2022kr " );
80
- $ this ->assertSame ("parsererror " , $ d ->documentElement ->tagName );
78
+ $ d = $ this ->p ->parseFromString ($ in , "text/xml;charset=csiso2022kr " );
79
+ $ this ->assertSame ("parsererror " , $ d ->documentElement ->localName );
81
80
$ this ->assertSame ("http://www.mozilla.org/newlayout/xml/parsererror.xml " , $ d ->documentElement ->namespaceURI );
82
81
$ this ->assertNotSame ("" , trim ($ d ->documentElement ->textContent ));
83
82
}
84
83
public function testParseWithInvalidEncodingInDocument (): void {
85
84
$ in = "<?xml version='1.0' encoding='bogus'?><html>Test</html> " ;
86
- $ p = new DOMParser ;
87
- $ d = $ p ->parseFromString ($ in , "text/xml " );
88
- $ this ->assertSame ("parsererror " , $ d ->documentElement ->tagName );
85
+ $ d = $ this ->p ->parseFromString ($ in , "text/xml " );
86
+ $ this ->assertSame ("parsererror " , $ d ->documentElement ->localName );
89
87
$ this ->assertSame ("http://www.mozilla.org/newlayout/xml/parsererror.xml " , $ d ->documentElement ->namespaceURI );
90
88
$ this ->assertNotSame ("" , trim ($ d ->documentElement ->textContent ));
91
89
}
0 commit comments