Commit | Line | Data |
aeaf3ce2 |
1 | use strict; |
2 | use Test::More; |
3 | |
4 | BEGIN { |
5 | eval "use DBD::SQLite"; |
9229f20a |
6 | plan $@ ? (skip_all => 'needs DBD::SQLite for testing') : (tests => 10); |
aeaf3ce2 |
7 | } |
8 | |
9 | use lib qw(t/lib); |
10 | |
11 | use_ok('DBICTest'); |
12 | |
13 | # test LIMIT |
14 | my $it = DBICTest::CD->search( {}, |
15 | { rows => 3, |
16 | order_by => 'title' } |
17 | ); |
18 | is( $it->count, 3, "count ok" ); |
19 | is( $it->next->title, "Caterwaulin' Blues", "iterator->next ok" ); |
20 | $it->next; |
21 | $it->next; |
22 | is( $it->next, undef, "next past end of resultset ok" ); |
23 | |
24 | # test OFFSET |
25 | my @cds = DBICTest::CD->search( {}, |
26 | { rows => 2, |
27 | offset => 2, |
28 | order_by => 'year' } |
29 | ); |
30 | is( $cds[0]->title, "Spoonful of bees", "offset ok" ); |
3c5b25c5 |
31 | |
9229f20a |
32 | # test software-based limiting |
33 | $it = DBICTest::CD->search( {}, |
34 | { rows => 3, |
35 | software_limit => 1, |
36 | order_by => 'title' } |
37 | ); |
38 | is( $it->count, 3, "software limit count ok" ); |
39 | is( $it->next->title, "Caterwaulin' Blues", "software iterator->next ok" ); |
40 | $it->next; |
41 | $it->next; |
42 | is( $it->next, undef, "software next past end of resultset ok" ); |
43 | |
44 | @cds = DBICTest::CD->search( {}, |
45 | { rows => 2, |
46 | offset => 2, |
47 | software_limit => 1, |
48 | order_by => 'year' } |
49 | ); |
50 | is( $cds[0]->title, "Spoonful of bees", "software offset ok" ); |
51 | |
3c5b25c5 |
52 | # based on a failing criteria submitted by waswas |
53 | # requires SQL::Abstract >= 1.20 |
54 | $it = DBICTest::CD->search( |
55 | { title => [ |
56 | -and => |
57 | { |
58 | -like => '%bees' |
59 | }, |
60 | { |
61 | -not_like => 'Forkful%' |
62 | } |
63 | ] |
64 | }, |
65 | { rows => 5 } |
66 | ); |
67 | is( $it->count, 1, "complex abstract count ok" ); |