new config option to DBICTest to let you set an alternative storage type, start on...
[dbsrgits/DBIx-Class.git] / t / 67pager.t
1 use strict;
2 use warnings;  
3
4 use Test::More qw(no_plan);
5 use lib qw(t/lib);
6 use DBICTest;
7
8 my $schema = DBICTest->init_schema();
9
10 # first page
11 my $it = $schema->resultset("CD")->search(
12     {},
13     { order_by => 'title',
14       rows => 3,
15       page => 1 }
16 );
17
18 is( $it->pager->entries_on_this_page, 3, "entries_on_this_page ok" );
19
20 is( $it->pager->next_page, 2, "next_page ok" );
21
22 is( $it->count, 3, "count on paged rs ok" );
23
24 is( $it->next->title, "Caterwaulin' Blues", "iterator->next ok" );
25
26 $it->next;
27 $it->next;
28
29 is( $it->next, undef, "next past end of page ok" );
30
31 # second page, testing with array
32 my @page2 = $schema->resultset("CD")->search( 
33     {},
34     { order_by => 'title',
35       rows => 3,
36       page => 2 }
37 );
38
39 is( $page2[0]->title, "Generic Manufactured Singles", "second page first title ok" );
40
41 # page a standard resultset
42 $it = $schema->resultset("CD")->search(
43   {},
44   { order_by => 'title',
45     rows => 3 }
46 );
47 my $page = $it->page(2);
48
49 is( $page->count, 2, "standard resultset paged rs count ok" );
50
51 is( $page->next->title, "Generic Manufactured Singles", "second page of standard resultset ok" );
52
53 # test software-based limit paging
54 $it = $schema->resultset("CD")->search(
55   {},
56   { order_by => 'title',
57     rows => 3,
58     page => 2,
59     software_limit => 1 }
60 );
61 is( $it->pager->entries_on_this_page, 2, "software entries_on_this_page ok" );
62
63 is( $it->pager->previous_page, 1, "software previous_page ok" );
64
65 is( $it->count, 2, "software count on paged rs ok" );
66
67 is( $it->next->title, "Generic Manufactured Singles", "software iterator->next ok" );
68
69 # test paging with chained searches
70 $it = $schema->resultset("CD")->search(
71     {},
72     { rows => 2,
73       page => 2 }
74 )->search( undef, { order_by => 'title' } );
75
76 is( $it->count, 2, "chained searches paging ok" );
77
78 my $p = sub { $schema->resultset("CD")->page(1)->pager->entries_per_page; };
79
80 is($p->(), 10, 'default rows is 10');
81
82 $schema->default_resultset_attributes({ rows => 5 });
83
84 is($p->(), 5, 'default rows is 5');