add a test for the page_list macro and fix it
authorTony Cook <tony@develop-help.com>
Wed, 20 Aug 2014 00:52:22 +0000 (10:52 +1000)
committerTony Cook <tony@develop-help.com>
Wed, 20 Aug 2014 00:52:22 +0000 (10:52 +1000)
MANIFEST
site/templates/preload.tmpl
t/060-generate/040-preload.t [new file with mode: 0644]

index 36b4e19..3dc5374 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -906,6 +906,7 @@ t/050-local/060-admin-group.t
 t/060-generate/010-generate.t
 t/060-generate/020-catalog.t
 t/060-generate/030-thumb.t
+t/060-generate/040-preload.t
 t/070-user/010-edit.t
 t/070-user/020-images.t
 t/070-user/050-user.t
index 5e5d3af..99c6d39 100644 (file)
@@ -89,7 +89,7 @@ Page <:= pages.page :> of <:= pages.pagecount :>
 <span>&lt&lt</span>
 <span>&lt</span>
 <:.end if -:>
-<:.for p in pcats.pages :>
+<:.for p in pages.pages :>
 <:.if p.link -:>
 <a href="<:= base |html :><:= pages.pname | uri:>=<:= p.page | uri :>&amp;<:=pages.ppname | uri :>=<:= pages.pp | uri :>"><:= p.page |html :></a>
 <:.else -:>
diff --git a/t/060-generate/040-preload.t b/t/060-generate/040-preload.t
new file mode 100644 (file)
index 0000000..39f325e
--- /dev/null
@@ -0,0 +1,104 @@
+#!perl -w
+use strict;
+use BSE::Test;
+use Cwd;
+use Test::More;
+my $start_dir;
+BEGIN {
+  $start_dir = getcwd();
+  my $cgidir = File::Spec->catdir(BSE::Test::base_dir, 'cgi-bin');
+  ok(chdir $cgidir, "switch to CGI directory");
+  push @INC, 'modules';
+}
+use BSE::API qw(bse_init bse_cfg);
+use BSE::Template;
+use BSE::Variables;
+use BSE::Request::Test;
+
+bse_init(".");
+
+my $cfg = bse_cfg();
+
+my $r = BSE::Request::Test->new
+  (
+   params =>
+   {
+   },
+  );
+
+my $t = BSE::Template->templater($cfg);
+my $vars = 
+  {
+   bse => BSE::Variables->dyn_variables
+   (
+    request => $r,
+   ),
+  };
+
+template_test(<<'IN', <<'EXPECT', "page_list");
+<:.set items = [ 1 .. 200 ] -:>
+<:.set p = bse.paged(items, { pp: 5 }) -:>
+<:.call "page_list", base:"/", pages: p :>
+IN
+
+<div class="pagelist">
+Page 1 of 40
+<span>&lt&lt</span>
+<span>&lt</span>
+
+<span>1</span>
+
+<a href="/?p=2&amp;pp=5">2</a>
+
+<a href="/?p=3&amp;pp=5">3</a>
+
+<a href="/?p=4&amp;pp=5">4</a>
+
+<a href="/?p=5&amp;pp=5">5</a>
+
+<a href="/?p=6&amp;pp=5">6</a>
+
+<a href="/?p=7&amp;pp=5">7</a>
+
+<a href="/?p=8&amp;pp=5">8</a>
+
+<a href="/?p=9&amp;pp=5">9</a>
+
+<a href="/?p=10&amp;pp=5">10</a>
+
+<a href="/?p=11&amp;pp=5">11</a>
+
+<a href="/?p=12&amp;pp=5">12</a>
+
+<span>...</span>
+
+<a href="/?p=33&amp;pp=5">33</a>
+
+<a href="/?p=34&amp;pp=5">34</a>
+
+<a href="/?p=35&amp;pp=5">35</a>
+
+<a href="/?p=36&amp;pp=5">36</a>
+
+<a href="/?p=37&amp;pp=5">37</a>
+
+<a href="/?p=38&amp;pp=5">38</a>
+
+<a href="/?p=39&amp;pp=5">39</a>
+
+<a href="/?p=40&amp;pp=5">40</a>
+
+<a href="/?p=2&amp;pp=5">&gt;</a>
+<a href="/?p=40&amp;pp=5">&gt;&gt</a>
+</div>
+EXPECT
+
+done_testing();
+
+sub template_test {
+  my ($in, $expect, $note) = @_;
+
+  my $result = $t->replace_template($in, {}, undef, undef, $vars);
+  my $b = Test::More->builder;
+  return $b->is_eq($result, $expect, $note);
+}