Commit | Line | Data |
b0ed2859 |
1 | use strictures 1; |
2 | use HTML::Zoom; |
5bfa7aeb |
3 | use Test::More skip_all => "Totally doesn't work yet"; |
b0ed2859 |
4 | |
5 | # Test that contant of elements defined as containing intrinsic CDATA are not |
6 | # selected as elements |
7 | |
8 | # NB: This tests HTML parsing rules. XHTML is different. |
9 | |
10 | my $template = <<HTML; |
11 | <!DOCTYPE html> |
12 | <html lang=en-gb> |
13 | <meta charset=utf-8> |
14 | <title>Test</title> |
15 | <style> |
16 | /* <textarea>Unmodified</textarea> */ |
17 | </style> |
18 | </head> |
19 | <body> |
20 | <p>Unmodified</p> |
21 | <textarea>Unmodified</textarea> |
22 | <script> |
23 | if (1) { |
24 | document.write('<p>'); |
25 | } else { |
26 | document.write('<div>'); |
27 | } |
28 | document.write('hello, world'); |
29 | if (1) { |
30 | document.write('</p>'); |
31 | } else { |
32 | document.write('</div>'); |
33 | } |
34 | </script> |
35 | HTML |
36 | |
37 | my $expected_p = <<HTML; |
38 | <!DOCTYPE html> |
39 | <html lang=en-gb> |
40 | <meta charset=utf-8> |
41 | <title>Test</title> |
42 | <style> |
43 | /* <textarea>Unmodified</textarea> */ |
44 | </style> |
45 | </head> |
46 | <body> |
47 | <p>Unmodified</p> |
48 | <textarea>Unmodified</textarea> |
49 | <script> |
50 | if (1) { |
51 | document.write('<p>'); |
52 | } else { |
53 | document.write('<div>'); |
54 | } |
55 | document.write('hello, world'); |
56 | if (1) { |
57 | document.write('</p>'); |
58 | } else { |
59 | document.write('</div>'); |
60 | } |
61 | </script> |
62 | HTML |
63 | |
64 | my $expected_t = <<HTML; |
65 | <!DOCTYPE html> |
66 | <html lang=en-gb> |
67 | <meta charset=utf-8> |
68 | <title>Test</title> |
69 | <style> |
70 | /* <textarea>Unmodified</textarea> */ |
71 | </style> |
72 | </head> |
73 | <body> |
74 | <p>Unmodified</p> |
75 | <textarea>Replaced</textarea> |
76 | <script> |
77 | if (1) { |
78 | document.write('<p>'); |
79 | } else { |
80 | document.write('<div>'); |
81 | } |
82 | document.write('hello, world'); |
83 | if (1) { |
84 | document.write('</p>'); |
85 | } else { |
86 | document.write('</div>'); |
87 | } |
88 | </script> |
89 | HTML |
90 | |
91 | my $replaced_p = HTML::Zoom->from_html($template)->select('p')->replace_content('Replaced')->to_html; |
92 | is($replaced_p, $expected_p, "Script element parsed as CDATA"); |
93 | |
94 | my $replaced_t = HTML::Zoom->from_html($template)->select('textarea')->replace_content('Replaced')->to_html; |
95 | is($replaced_t, $expected_t, "Style element parsed as CDATA"); |
96 | |
97 | done_testing; |