use warnings;
use Test::More;
-use Test::Exception;
use lib qw(t/lib);
use DBICTest;
{ order_by => 'title',
rows => 3 }
);
-my $page = $it->page(2);
-is( $page->count, 2, "standard resultset paged rs count ok" );
+{
+ my $page = $it->page(2);
-is( $page->next->title, "Generic Manufactured Singles", "second page of standard resultset ok" );
+ is( $page->count, 2, "standard resultset paged rs count ok" );
+ is( $page->next->title, "Generic Manufactured Singles", "second page of standard resultset ok" );
+}
# test software-based limit paging
$it = $rs->search(
});
my $row = $rs->search({}, {
- order_by => 'cdid',
+ order_by => 'cdid',
offset => 3,
rows => 1
})->single;
is($p->(), 5, 'default rows is 5');
+# does serialization work (preserve laziness, while preserving state if exits)
+$qcnt = 0;
+$it = $rs->search(
+ {},
+ { order_by => 'title',
+ rows => 5,
+ page => 2 }
+);
+$pager = $it->pager;
+is ($qcnt, 0, 'No queries on rs/pager creation');
+
+# test *requires* it to be Storable
+$it = do {
+ local $DBIx::Class::ResultSourceHandle::thaw_schema = $schema;
+ Storable::dclone ($it);
+};
+is ($qcnt, 0, 'No queries on rs/pager freeze/thaw');
+
+is( $it->pager->entries_on_this_page, 1, "entries_on_this_page ok for page 2" );
+
+is ($qcnt, 1, 'Count fired to get pager page entries');
+
+$rs->create({ title => 'bah', artist => 1, year => 2011 });
+
+$qcnt = 0;
+# test *requires* it to be Storable
+$it = do {
+ local $DBIx::Class::ResultSourceHandle::thaw_schema = $schema;
+ Storable::dclone ($it);
+};
+is ($qcnt, 0, 'No queries on rs/pager freeze/thaw');
+
+is( $it->pager->entries_on_this_page, 1, "entries_on_this_page ok for page 2, even though underlying count changed" );
+
+is ($qcnt, 0, 'No count fired on pre-existing total count');
done_testing;