test for hashref support on codestream
[catagits/HTML-Zoom.git] / t / synopsis / zoom.t
CommitLineData
1cf03540 1use strictures 1;
0d8f057e 2use Test::More qw(no_plan);
3
4use HTML::Zoom;
5
6my $template = <<HTML;
7<html>
8 <head>
9 <title>Hello people</title>
10 </head>
11 <body>
12 <h1 id="greeting">Placeholder</h1>
13 <div id="list">
14 <span>
15 <p>Name: <span class="name">Bob</span></p>
16 <p>Age: <span class="age">23</span></p>
17 </span>
18 <hr class="between" />
19 </div>
20 </body>
21</html>
22HTML
23
24my $output = HTML::Zoom
25 ->from_html($template)
26 ->select('title, #greeting')->replace_content('Hello world & dog!')
27 ->select('#list')->repeat_content(
28 [
29 sub {
30 $_->select('.name')->replace_content('Matt')
31 ->select('.age')->replace_content('26')
32 },
33 sub {
34 $_->select('.name')->replace_content('Mark')
35 ->select('.age')->replace_content('0x29')
36 },
37 sub {
38 $_->select('.name')->replace_content('Epitaph')
39 ->select('.age')->replace_content('<redacted>')
40 },
41 ],
42 { repeat_between => '.between' }
43 )
44 ->to_html;
45
46
47my $expect = <<HTML;
48<html>
49 <head>
50 <title>Hello world &amp; dog!</title>
51 </head>
52 <body>
53 <h1 id="greeting">Hello world &amp; dog!</h1>
54 <div id="list">
55 <span>
56 <p>Name: <span class="name">Matt</span></p>
57 <p>Age: <span class="age">26</span></p>
58 </span>
59 <hr class="between" />
60 <span>
61 <p>Name: <span class="name">Mark</span></p>
62 <p>Age: <span class="age">0x29</span></p>
63 </span>
64 <hr class="between" />
65 <span>
66 <p>Name: <span class="name">Epitaph</span></p>
67 <p>Age: <span class="age">&lt;redacted&gt;</span></p>
68 </span>
69
70 </div>
71 </body>
72</html>
73HTML
74is($output, $expect, 'Synopsis code works ok');
75