X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=dbsrgits%2FDBIx-Class.git;a=blobdiff_plain;f=t%2F67pager.t;h=eb17faa555743283dc95d1c7e0fe5fa85a9f18d8;hp=b7eb2ca9487de434256cf295cba605d06a2db158;hb=cd1228209f685767668163c2510723959951641b;hpb=e8885a53b047e70baa425a6ed631cd5f97bf2195 diff --git a/t/67pager.t b/t/67pager.t index b7eb2ca..eb17faa 100644 --- a/t/67pager.t +++ b/t/67pager.t @@ -5,6 +5,7 @@ use Test::More; use Test::Exception; use lib qw(t/lib); use DBICTest; +use Storable qw/dclone/; my $schema = DBICTest->init_schema(); @@ -186,5 +187,32 @@ $schema->default_resultset_attributes({ rows => 5 }); 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'); + +$it = do { local $DBIx::Class::ResultSourceHandle::thaw_schema = $schema; 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; +$it = do { local $DBIx::Class::ResultSourceHandle::thaw_schema = $schema; 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;