Produce half decent where clauses
[dbsrgits/SQL-Abstract-2.0-ish.git] / t / 001_basic.t
1 use strict;
2 use warnings;
3
4 use Test::More tests => 9;
5
6 use_ok('SQL::Abstract') or BAIL_OUT( "$@" );
7
8     $DB::single = 1;
9 is SQL::Abstract->generate( [ -name => qw/me id/]), "me.id",
10   "Simple name generator";
11
12 is SQL::Abstract->generate(
13   [ -list => 
14     [ -name => qw/me id/],
15     [ -name => qw/me foo bar/],
16     [ -name => qw/bar/]
17   ] 
18 ), "me.id, me.foo.bar, bar",
19   "List generator";
20
21 is SQL::Abstract->generate(
22   [ -alias => [ -name => qw/me id/], "foobar", ] 
23 ), "me.id AS foobar",
24   "Alias generator";
25
26 is SQL::Abstract->generate(
27   [ -where =>
28       [ '>', [-name => qw/me.id/], [-value => 500 ] ]
29   ]
30 ), "WHERE me.id > ?", "where clause";
31
32
33 is SQL::Abstract->generate(
34   [ -where =>
35       [ '>', [-name => qw/me.id/], [-value => 500 ] ],
36       [ '==', [-name => qw/me.name/], [-value => '200' ] ]
37   ]
38 ), "WHERE me.id > ? AND me.name = ?", "where clause";
39
40
41 is SQL::Abstract->generate(
42   [ -where =>  -or =>
43       [ '>', [-name => qw/me.id/], [-value => 500 ] ],
44       [ '==', [-name => qw/me.name/], [-value => '200' ] ],
45   ]
46 ), "WHERE me.id > ? OR me.name = ?", "where clause";
47
48
49 is SQL::Abstract->generate(
50   [ -where =>  -or =>
51       [ '>', [-name => qw/me.id/], [-value => 500 ] ],
52       [ -or => 
53         [ '==', [-name => qw/me.name/], [-value => '200' ] ],
54         [ '==', [-name => qw/me.name/], [-value => '100' ] ]
55       ]
56   ]
57 ), "WHERE me.id > ? OR me.name = ? OR me.name = ?", "where clause";
58
59 is SQL::Abstract->generate(
60   [ -where =>  -or =>
61       [ '==', [-name => qw/me.id/], [-value => 500 ] ],
62       [ -and => 
63         [ '>', [-name => qw/me.name/], [-value => '200' ] ],
64         [ '<', [-name => qw/me.name/], [-value => '100' ] ]
65       ]
66   ]
67 ), "WHERE me.id = ? OR (me.name > ? AND me.name < ?)", "where clause";