1use strict;
2use warnings;
3
4use Test::More;
5use Test::Exception;
6
7use lib qw(t/lib);
8use DBIC::SqlMakerTest;
9use DBICTest;
10
11
12my $schema = DBICTest->init_schema();
13
14my @chain = (
15  {
16    columns     => [ 'cdid' ],
17    '+columns'  => [ { title_lc => { lower => 'title' } } ],
18    '+select'   => [ 'genreid' ],
19    '+as'       => [ 'genreid' ],
20  } => 'SELECT me.cdid, LOWER( title ), me.genreid FROM cd me',
21
22  {
23    '+columns'  => [ { max_year => { max => 'me.year' }}, ],
24    '+select'   => [ { count => 'me.cdid' }, ],
25    '+as'       => [ 'cnt' ],
26  } => 'SELECT me.cdid, LOWER( title ), MAX( me.year ), me.genreid, COUNT( me.cdid ) FROM cd me',
27
28  {
29    select      => [ { min => 'me.cdid' }, ],
30    as          => [ 'min_id' ],
31  } => 'SELECT MIN( me.cdid ) FROM cd me',
32
33  {
34    '+columns' => [ { cnt => { count => 'cdid' } } ],
35  } => 'SELECT MIN( me.cdid ), COUNT ( cdid ) FROM cd me',
36
37  {
38    columns => [ 'year' ],
39  } => 'SELECT me.year FROM cd me',
40);
41
42my $rs = $schema->resultset('CD');
43
44my $testno = 1;
45while (@chain) {
46  my $attrs = shift @chain;
47  my $sql = shift @chain;
48
49  $rs = $rs->search ({}, $attrs);
50
51  is_same_sql_bind (
52    $rs->as_query,
53    "($sql)",
54    [],
55    "Test $testno of SELECT assembly ok",
56  );
57
58  $testno++;
59}
60
61done_testing;
62