replace Makefile.PL with dist.ini
[catagits/HTML-Zoom.git] / t / repeat_bugfixes.t
CommitLineData
94a3ddd9 1use strict;
2use warnings FATAL => 'all';
3
4use HTML::Zoom;
5use Test::More;
6
7ok my $zoom = HTML::Zoom->from_html(<<HTML);
8<html>
9 <head>
10 <title>Hi!</title>
11 </head>
12 <body id="content-area">
13 <h1>Test</h1>
14 <div>
15 <p class="first-para">Some Stuff</p>
16 <p class="body-para">More Stuff</p>
17 <p class="body-para">Even More Stuff</p>
18 <ol>
19 <li class="first-item odd">First</li>
20 <li class="body-items even">Stuff A</li>
21 <li class="body-items odd">Stuff B</li>
22 <li class="body-items even">Stuff C</li>
23 <li class="last-item odd">Last</li>
24 </ol>
25 <ul class="items">
26 <li class="first">space</li>
27 <li class="second">space</li>
28 </ul>
29 <p class="body-para">Even More stuff</p>
30 <p class="last-para">Some Stuff</p>
31 </div>
32 <div id="blocks">
33 <h2 class="h2-item">Sub Item</h2>
34 </div>
35 <ul id="people">
36 <li class="name">name</li>
37 <li class="email">email</li>
38 </ul>
39 <ul id="people2">
40 <li class="name">name</li>
41 <li class="email">email</li>
42 </ul>
43 <ul id="object">
44 <li class="aa">AA</li>
45 <li class="bb">BB</li>
46 </ul>
47 <p id="footer">Copyright 2222</p>
48 </body>
49</html>
50HTML
51
52## Stub for testing the fill method to be
53
54ok my $title = sub {
55 my ($z, $content) = @_;
56 $z = $z->select('title')->replace_content($content);
57 return $z;
58};
59
60{
61 ok my $z = HTML::Zoom
62 ->from_html(q[<ul><li>Test</li></ul>])
63 ->select('ul')
64 ->repeat_content(
65 [
66 sub { $_->select('li')->replace_content('Real Life1') },
67 sub { $_->select('li')->replace_content('Real Life2') },
68 sub { $_->select('li')->replace_content('Real Life3') },
69 ],
70 )
71 ->to_html;
72
73 is $z, '<ul><li>Real Life1</li><li>Real Life2</li><li>Real Life3</li></ul>',
74 'Got correct from repeat_content';
75}
76
77{
78 ok my $z = HTML::Zoom
79 ->from_html(q[<ul><li>Test</li></ul>])
80 ->select('ul')
81 ->repeat_content([
82 map { my $i = $_; +sub {$_->select('li')->replace_content("Real Life$i")} } (1,2,3)
83 ])
84 ->to_html;
85
86 is $z, '<ul><li>Real Life1</li><li>Real Life2</li><li>Real Life3</li></ul>',
87 'Got correct from repeat_content';
88}
89
90
91use HTML::Zoom::CodeStream;
92sub code_stream (&) {
93 my $code = shift;
94 return sub {
95 HTML::Zoom::CodeStream->new({
96 code => $code,
97 });
98 }
99}
100
101{
102 my @list = qw(foo bar baz);
103 ok my $z = HTML::Zoom
104 ->from_html(q[<ul><li>Test</li></ul>])
105 ->select('ul')
106 ->repeat_content(code_stream {
107 if (my $name = shift @list) {
108 return sub { $_->select('li')->replace_content($name) };
109 } else {
110 return
111 }
112 })
113 ->to_html;
114
115 is $z, '<ul><li>foo</li><li>bar</li><li>baz</li></ul>',
116 'Got correct from repeat_content';
117}
118
119{
120 my @list = qw(foo bar baz);
121 ok my $z = HTML::Zoom
122 ->from_html(q[<ul><li>Test</li></ul>])
123 ->select('ul')
124 ->repeat_content(sub {
125 HTML::Zoom::CodeStream->new({
126 code => sub {
127 if (my $name = shift @list) {
128 return sub { $_->select('li')->replace_content($name) };
129 } else {
130 return
131 }
132 }
133 });
134 })
135 ->to_html;
136
137 is $z, '<ul><li>foo</li><li>bar</li><li>baz</li></ul>',
138 'Got correct from repeat_content';
139}
140
141done_testing;