made the new FilterBuilder synopsis pass its test
John Napiorkowski [Fri, 24 Sep 2010 01:39:25 +0000 (21:39 -0400)]
lib/HTML/Zoom/FilterBuilder.pm
t/synopsis/filterbuilder.t [new file with mode: 0644]
t/synopsis/zoom.t [new file with mode: 0644]

index cfae74e..96ddb8f 100644 (file)
@@ -282,39 +282,57 @@ HTML::Zoom::FilterBuilder - Add Filters to a Stream
 
 =head1 SYNOPSIS
 
-    use HTML::Zoom;
-    my $root = HTML::Zoom
-        ->from_html(<<MAIN);
-    <html>
-      <head>
-        <title>Default Title</title>
-      </head>
-      <body>
-        Default Content
-      </body>
-    </html>
-    MAIN
-
-    my $body = HTML::Zoom
-        ->from_html(<<BODY);
-    <div id="stuff">
-        <p>Stuff</p>
-        <p id="p1">Stuff</p>
-    </div>
-    BODY
-
-    print $root
-    ->select('title')
-    ->replace_content('Hello World')
-    ->select('body')
-    ->replace_content($body)
-    ->select('#p1')
-    ->replace_content(sub {
-        ## Ask mst...
-
-        })
-    ->to_html;
-
+  use HTML::Zoom;
+  my $root = HTML::Zoom
+      ->from_html(<<MAIN);
+  <html>
+    <head>
+      <title>Default Title</title>
+    </head>
+    <body>
+      Default Content
+    </body>
+  </html>
+  MAIN
+
+  my $body = HTML::Zoom
+      ->from_html(<<BODY);
+  <div id="stuff">
+      <p>Stuff</p>
+  </div>
+  BODY
+
+  my $output =  $root
+  ->select('title')
+  ->replace_content('Hello World')
+  ->select('body')
+  ->replace_content($body)
+  ->to_html;
+
+will produce:
+
+=begin testinfo
+
+  my $expect = <<HTML;
+
+=end testinfo
+
+  <html>
+    <head>
+      <title>Hello World</title>
+    </head>
+    <body><div id="stuff">
+      <p>Stuff</p>
+  </div>
+  </body>
+  </html>
+
+=begin testinfo
+
+  HTML
+  is($output, $expect, 'Synopsis code works ok');
+
+=end testinfo
 
 =head1 DESCRIPTION
 
diff --git a/t/synopsis/filterbuilder.t b/t/synopsis/filterbuilder.t
new file mode 100644 (file)
index 0000000..9769c3d
--- /dev/null
@@ -0,0 +1,45 @@
+use strict;
+use warnings FATAL => 'all';
+use Test::More qw(no_plan);
+
+use HTML::Zoom;
+my $root = HTML::Zoom
+    ->from_html(<<MAIN);
+<html>
+  <head>
+    <title>Default Title</title>
+  </head>
+  <body>
+    Default Content
+  </body>
+</html>
+MAIN
+
+my $body = HTML::Zoom
+    ->from_html(<<BODY);
+<div id="stuff">
+    <p>Stuff</p>
+</div>
+BODY
+
+my $output =  $root
+->select('title')
+->replace_content('Hello World')
+->select('body')
+->replace_content($body)
+->to_html;
+
+
+my $expect = <<HTML;
+<html>
+  <head>
+    <title>Hello World</title>
+  </head>
+  <body><div id="stuff">
+    <p>Stuff</p>
+</div>
+</body>
+</html>
+HTML
+is($output, $expect, 'Synopsis code works ok');
+
diff --git a/t/synopsis/zoom.t b/t/synopsis/zoom.t
new file mode 100644 (file)
index 0000000..83f99e8
--- /dev/null
@@ -0,0 +1,76 @@
+use strict;
+use warnings FATAL => 'all';
+use Test::More qw(no_plan);
+
+use HTML::Zoom;
+
+my $template = <<HTML;
+<html>
+  <head>
+    <title>Hello people</title>
+  </head>
+  <body>
+    <h1 id="greeting">Placeholder</h1>
+    <div id="list">
+      <span>
+        <p>Name: <span class="name">Bob</span></p>
+        <p>Age: <span class="age">23</span></p>
+      </span>
+      <hr class="between" />
+    </div>
+  </body>
+</html>
+HTML
+
+my $output = HTML::Zoom
+  ->from_html($template)
+  ->select('title, #greeting')->replace_content('Hello world & dog!')
+  ->select('#list')->repeat_content(
+      [
+        sub {
+          $_->select('.name')->replace_content('Matt')
+            ->select('.age')->replace_content('26')
+        },
+        sub {
+          $_->select('.name')->replace_content('Mark')
+            ->select('.age')->replace_content('0x29')
+        },
+        sub {
+          $_->select('.name')->replace_content('Epitaph')
+            ->select('.age')->replace_content('<redacted>')
+        },
+      ],
+      { repeat_between => '.between' }
+    )
+  ->to_html;
+
+
+my $expect = <<HTML;
+<html>
+  <head>
+    <title>Hello world &amp; dog!</title>
+  </head>
+  <body>
+    <h1 id="greeting">Hello world &amp; dog!</h1>
+    <div id="list">
+      <span>
+        <p>Name: <span class="name">Matt</span></p>
+        <p>Age: <span class="age">26</span></p>
+      </span>
+      <hr class="between" />
+      <span>
+        <p>Name: <span class="name">Mark</span></p>
+        <p>Age: <span class="age">0x29</span></p>
+      </span>
+      <hr class="between" />
+      <span>
+        <p>Name: <span class="name">Epitaph</span></p>
+        <p>Age: <span class="age">&lt;redacted&gt;</span></p>
+      </span>
+      
+    </div>
+  </body>
+</html>
+HTML
+is($output, $expect, 'Synopsis code works ok');
+