doctype test
[catagits/HTML-Zoom.git] / t / synopsis.t
CommitLineData
4b4f6408 1use strict;
2use warnings FATAL => 'all';
5a174096 3use Test::More qw(no_plan);
4
4b4f6408 5use HTML::Zoom;
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
23my $output = HTML::Zoom
24 ->from_html($template)
25 ->select('title, #greeting')->replace_content('Hello world & dog!')
26 ->select('#list')->repeat_content(
27 [
28 sub {
29 $_->select('.name')->replace_content('Matt')
30 ->select('.age')->replace_content('26')
31 },
32 sub {
33 $_->select('.name')->replace_content('Mark')
34 ->select('.age')->replace_content('0x29')
35 },
36 sub {
37 $_->select('.name')->replace_content('Epitaph')
38 ->select('.age')->replace_content('<redacted>')
39 },
40 ],
41 { repeat_between => '.between' }
42 )
43 ->to_html;
44my $expect = <<HTML;
45<html>
46 <head>
47 <title>Hello world &amp; dog!</title>
48 </head>
49 <body>
50 <h1 id="greeting">Hello world &amp; dog!</h1>
51 <div id="list">
52 <span>
53 <p>Name: <span class="name">Matt</span></p>
54 <p>Age: <span class="age">26</span></p>
55 </span>
56 <hr class="between" />
57 <span>
58 <p>Name: <span class="name">Mark</span></p>
59 <p>Age: <span class="age">0x29</span></p>
60 </span>
61 <hr class="between" />
62 <span>
63 <p>Name: <span class="name">Epitaph</span></p>
64 <p>Age: <span class="age">&lt;redacted&gt;</span></p>
65 </span>
66
67 </div>
68 </body>
69</html>
70HTML
71is($output, $expect, 'Synopsis code works ok');;