4 use Test::More tests => 18;
7 use_ok('SQL::Abstract') or BAIL_OUT( "$@" );
9 # TODO: once MXMS supports %args, use that here
10 my $sqla = SQL::Abstract->create(1);
11 is $sqla->dispatch( [ -name => qw/me id/]), "me.id",
12 "Simple name generator";
16 ), "0 = 1", "false value";
20 ), "1 = 1", "true value";
24 [ -name => qw/me id/],
25 [ -name => qw/me foo bar/],
28 ), "me.id, me.foo.bar, bar",
32 [ -alias => [ -name => qw/me id/], "foobar", ]
37 [ -order_by => [ -name => qw/me date/ ] ]
38 ), "ORDER BY me.date";
42 [ -name => qw/me date/ ],
43 [ -name => qw/me foobar/ ],
45 ), "ORDER BY me.date, me.foobar";
48 [ -order_by => [ -desc => [ -name => qw/me date/ ] ] ]
49 ), "ORDER BY me.date DESC";
54 ), "0 = 1", "emtpy -in";
58 [ '>', [-name => qw/me id/], [-value => 500 ] ]
60 ), "WHERE me.id > ?", "where clause";
62 eq_or_diff( [ SQL::Abstract->generate(
65 [ '>', [-name => qw/me id/], [-value => 500 ] ],
66 [ '==', [-name => qw/me name/], [-value => '200' ] ]
69 [ "WHERE me.id > ? AND me.name = ?",
80 [ '>', [-name => qw/me id/], [-value => 500 ] ],
81 [ '==', [-name => qw/me name/], [-value => '200' ] ],
83 ), "WHERE me.id > ? OR me.name = ?", "where clause";
88 [ '>', [-name => qw/me id/], [-value => 500 ] ],
90 [ '==', [-name => qw/me name/], [-value => '200' ] ],
91 [ '==', [-name => qw/me name/], [-value => '100' ] ]
94 ), "WHERE me.id > ? OR me.name = ? OR me.name = ?", "where clause";
98 [ '==', [-name => qw/me id/], [-value => 500 ] ],
100 [ '>', [-name => qw/me name/], [-value => '200' ] ],
101 [ '<', [-name => qw/me name/], [-value => '100' ] ]
104 ), "WHERE me.id = ? OR me.name > ? AND me.name < ?", "where clause";
108 [ '==', [-name => qw/me id/], [-value => 500 ] ],
110 [ '>', [-name => qw/me name/], [-value => '200' ] ],
111 [ '<', [-name => qw/me name/], [-value => '100' ] ]
114 ), "WHERE me.id = ? AND me.name > ? AND me.name < ?", "where clause";
119 [ '==', [-name => qw/me id/], [-value => 500 ] ],
121 [ '>', [-name => qw/me name/], [-value => '200' ] ],
122 [ '<', [-name => qw/me name/], [-value => '100' ] ]
125 ), "WHERE me.id = ? AND (me.name > ? OR me.name < ?)", "where clause";
128 [SQL::Abstract->generate(
132 [-name => qw/me id/],
140 [ "WHERE me.id IN (?, ?, ?)",