a8a2445c5b8eebd03e00d43a9211191d79b6d4c7
[dbsrgits/DBIx-Class.git] / t / cdbi / abstract / search_where.t
1 use Test::More;
2
3 use strict;
4 use warnings;
5
6 BEGIN {
7   eval "use DBIx::Class::CDBICompat;";
8   if ($@) {
9     plan (skip_all => "Class::Trigger and DBIx::ContextualFetch required: $@");
10     next;
11   }
12   eval "use DBD::SQLite";
13   plan $@ ? (skip_all => 'needs DBD::SQLite for testing') : (tests => 10);
14 }
15
16 INIT {
17   use lib 't/cdbi/testlib';
18   use Film;
19 }
20
21
22 Film->create({ Title => $_, Rating => "PG" }) for ("Superman", "Super Fuzz");
23 Film->create({ Title => "Batman", Rating => "PG13" });
24
25 my $superman = Film->search_where( Title => "Superman" );
26 is $superman->next->Title, "Superman", "search_where() as iterator";
27 is $superman->next, undef;
28
29 {
30     my @supers = Film->search_where({ title => { 'like' => 'Super%' } });
31     is_deeply [sort map $_->Title, @supers],
32               [sort ("Super Fuzz", "Superman")], 'like';
33 }
34     
35
36 my @all = Film->search_where({}, { order_by => "Title ASC" });
37 is_deeply ["Batman", "Super Fuzz", "Superman"],
38           [map $_->Title, @all],
39           "order_by ASC";
40
41 @all = Film->search_where({}, { order_by => "Title DESC" });
42 is_deeply ["Superman", "Super Fuzz", "Batman"],
43           [map $_->Title, @all],
44           "order_by DESC";
45
46 @all = Film->search_where({ Rating => "PG" }, { limit => 1, order_by => "Title ASC" });
47 is_deeply ["Super Fuzz"],
48           [map $_->Title, @all],
49           "where, limit";
50
51 @all = Film->search_where({}, { limit => 2, order_by => "Title ASC" });
52 is_deeply ["Batman", "Super Fuzz"],
53           [map $_->Title, @all],
54           "limit";
55
56 @all = Film->search_where({}, { offset => 1, order_by => "Title ASC" });
57 is_deeply ["Super Fuzz", "Superman"],
58           [map $_->Title, @all],
59           "offset";
60
61 @all = Film->search_where({}, { limit => 1, offset => 1, order_by => "Title ASC" });
62 is_deeply ["Super Fuzz"],
63           [map $_->Title, @all],
64           "limit + offset";
65
66 @all = Film->search_where({}, { limit => 2, offset => 1,
67                                 limit_dialect => "Top", order_by => "Title ASC"
68                               });
69 is_deeply ["Super Fuzz", "Superman"],
70           [map $_->Title, @all],
71           "limit_dialect ignored";
72