A few simple order by tests. Not sure i'm happy with the waht of doing asc/desc
[dbsrgits/SQL-Abstract-2.0-ish.git] / t / 001_basic.t
1 use strict;
2 use warnings;
3
4 use Test::More tests => 14;
5
6 use_ok('SQL::Abstract') or BAIL_OUT( "$@" );
7
8 is SQL::Abstract->generate( [ -name => qw/me id/]), "me.id",
9   "Simple name generator";
10
11 is SQL::Abstract->generate(
12   [ -list => 
13     [ -name => qw/me id/],
14     [ -name => qw/me foo bar/],
15     [ -name => qw/bar/]
16   ] 
17 ), "me.id, me.foo.bar, bar",
18   "List generator";
19
20 is SQL::Abstract->generate(
21   [ -alias => [ -name => qw/me id/], "foobar", ] 
22 ), "me.id AS foobar",
23   "Alias generator";
24
25 is SQL::Abstract->generate(
26   [ -order_by => [ -name => qw/me date/ ] ]
27 ), "ORDER BY me.date";
28
29 is SQL::Abstract->generate(
30   [ -order_by => 
31     [ -name => qw/me date/ ],
32     [ -name => qw/me foobar/ ],
33   ]
34 ), "ORDER BY me.date, me.foobar";
35
36 is SQL::Abstract->generate(
37   [ -order_by => [ -desc => [ -name => qw/me date/ ] ] ]
38 ), "ORDER BY me.date DESC";
39
40
41 is SQL::Abstract->generate(
42   [ -where =>
43       [ '>', [-name => qw/me id/], [-value => 500 ] ]
44   ]
45 ), "WHERE me.id > ?", "where clause";
46
47
48 is SQL::Abstract->generate(
49   [ -where =>
50       [ '>', [-name => qw/me id/], [-value => 500 ] ],
51       [ '==', [-name => qw/me name/], [-value => '200' ] ]
52   ]
53 ), "WHERE me.id > ? AND me.name = ?", "where clause";
54
55
56 is SQL::Abstract->generate(
57   [ -where =>  -or =>
58       [ '>', [-name => qw/me id/], [-value => 500 ] ],
59       [ '==', [-name => qw/me name/], [-value => '200' ] ],
60   ]
61 ), "WHERE me.id > ? OR me.name = ?", "where clause";
62
63
64 is SQL::Abstract->generate(
65   [ -where =>  -or =>
66       [ '>', [-name => qw/me id/], [-value => 500 ] ],
67       [ -or => 
68         [ '==', [-name => qw/me name/], [-value => '200' ] ],
69         [ '==', [-name => qw/me name/], [-value => '100' ] ]
70       ]
71   ]
72 ), "WHERE me.id > ? OR me.name = ? OR me.name = ?", "where clause";
73
74 is SQL::Abstract->generate(
75   [ -where =>  -or =>
76       [ '==', [-name => qw/me id/], [-value => 500 ] ],
77       [ -and => 
78         [ '>', [-name => qw/me name/], [-value => '200' ] ],
79         [ '<', [-name => qw/me name/], [-value => '100' ] ]
80       ]
81   ]
82 ), "WHERE me.id = ? OR me.name > ? AND me.name < ?", "where clause";
83
84 is SQL::Abstract->generate(
85   [ -where =>  -and =>
86       [ '==', [-name => qw/me id/], [-value => 500 ] ],
87       [ -and => 
88         [ '>', [-name => qw/me name/], [-value => '200' ] ],
89         [ '<', [-name => qw/me name/], [-value => '100' ] ]
90       ]
91   ]
92 ), "WHERE me.id = ? AND me.name > ? AND me.name < ?", "where clause";
93
94
95 is SQL::Abstract->generate(
96   [ -where =>  -and =>
97       [ '==', [-name => qw/me id/], [-value => 500 ] ],
98       [ -or => 
99         [ '>', [-name => qw/me name/], [-value => '200' ] ],
100         [ '<', [-name => qw/me name/], [-value => '100' ] ]
101       ]
102   ]
103 ), "WHERE me.id = ? AND (me.name > ? OR me.name < ?)", "where clause";