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