5071f0c63c540c2d26793e4d37c28c1617e07150
[dbsrgits/DBIx-Class.git] / t / resultset / as_query.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings FATAL => 'all';
5
6 use Data::Dumper;
7
8 use Test::More;
9
10 BEGIN {
11     eval "use SQL::Abstract 1.49";
12     plan $@
13         ? ( skip_all => "Needs SQLA 1.49+" )
14         : ( tests => 4 );
15 }
16
17 use lib qw(t/lib);
18 use DBICTest;
19 use DBIC::SqlMakerTest;
20
21 my $schema = DBICTest->init_schema();
22 my $art_rs = $schema->resultset('Artist');
23 my $cdrs = $schema->resultset('CD');
24
25 {
26   my $arr = $art_rs->as_query;
27   my ($query, @bind) = @{$$arr};
28
29   is_same_sql_bind(
30     $query, \@bind,
31     "(SELECT me.artistid, me.name, me.rank, me.charfield FROM artist me)", [],
32   );
33 }
34
35 $art_rs = $art_rs->search({ name => 'Billy Joel' });
36
37 {
38   my $arr = $art_rs->as_query;
39   my ($query, @bind) = @{$$arr};
40
41   is_same_sql_bind(
42     $query, \@bind,
43     "(SELECT me.artistid, me.name, me.rank, me.charfield FROM artist me WHERE ( name = ? ))",
44     [ [ name => 'Billy Joel' ] ],
45   );
46 }
47
48 $art_rs = $art_rs->search({ rank => 2 });
49
50 {
51   my $arr = $art_rs->as_query;
52   my ($query, @bind) = @{$$arr};
53
54   is_same_sql_bind(
55     $query, \@bind,
56     "(SELECT me.artistid, me.name, me.rank, me.charfield FROM artist me WHERE ( ( ( rank = ? ) AND ( name = ? ) ) ) )",
57     [ [ rank => 2 ], [ name => 'Billy Joel' ] ],
58   );
59 }
60
61 my $rscol = $art_rs->get_column( 'charfield' );
62
63 {
64   my $arr = $rscol->as_query;
65   my ($query, @bind) = @{$$arr};
66
67   is_same_sql_bind(
68     $query, \@bind,
69     "(SELECT me.charfield FROM artist me WHERE ( ( ( rank = ? ) AND ( name = ? ) ) ) )",
70     [ [ rank => 2 ], [ name => 'Billy Joel' ] ],
71   );
72 }
73
74 __END__