add strictures commit (out of order)
[catagits/HTML-Zoom.git] / t / synopsis / zoom.t
1 use strictures 1;
2 use Test::More qw(no_plan);
3
4 use HTML::Zoom;
5
6 my $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>
22 HTML
23
24 my $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
47 my $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>
73 HTML
74 is($output, $expect, 'Synopsis code works ok');
75