ORDER BY, HAVING, GROUP BY and WHERE clauses on select
[dbsrgits/SQL-Abstract-2.0-ish.git] / t / 001_basic.t
index 0ad697f..849a982 100644 (file)
@@ -2,66 +2,51 @@ use strict;
 use warnings;
 
 use Test::More tests => 9;
+use Test::Differences;
 
 use_ok('SQL::Abstract') or BAIL_OUT( "$@" );
+use_ok('SQL::Abstract::AST::v1') or BAIL_OUT( "$@" );
 
-    $DB::single = 1;
-is SQL::Abstract->generate( [ -name => qw/me id/]), "me.id",
+my $sqla = SQL::Abstract->create(1);
+
+# TODO: once MXMS supports %args, use that here
+is $sqla->dispatch( { -type => 'name', args => [qw/me id/] }), "me.id",
   "Simple name generator";
 
-is SQL::Abstract->generate(
-  [ -list => 
-    [ -name => qw/me id/],
-    [ -name => qw/me foo bar/],
-    [ -name => qw/bar/]
-  ] 
-), "me.id, me.foo.bar, bar",
-  "List generator";
+is $sqla->dispatch( { -type => 'name', args => [qw/me */]}),
+   "me.*",
+   "Simple name generator";
 
-is SQL::Abstract->generate(
-  [ -alias => [ -name => qw/me id/], "foobar", ] 
-), "me.id AS foobar",
-  "Alias generator";
+$sqla->quote_chars(['`']);
 
-is SQL::Abstract->generate(
-  [ -where =>
-      [ '>', [-name => qw/me.id/], [-value => 500 ] ]
-  ]
-), "WHERE me.id > ?", "where clause";
+is $sqla->dispatch( { -type => 'name', args => [qw/me */]}),
+   "`me`.*",
+   "Simple name generator";
 
+$sqla->disable_quoting;
 
-is SQL::Abstract->generate(
-  [ -where =>
-      [ '>', [-name => qw/me.id/], [-value => 500 ] ],
-      [ '==', [-name => qw/me.name/], [-value => '200' ] ]
-  ]
-), "WHERE me.id > ? AND me.name = ?", "where clause";
+is $sqla->dispatch(
+  { -type => 'false' }
+), "0 = 1", "false value";
 
+is $sqla->dispatch(
+  { -type => 'true' }
+), "1 = 1", "true value";
 
-is SQL::Abstract->generate(
-  [ -where =>  -or =>
-      [ '>', [-name => qw/me.id/], [-value => 500 ] ],
-      [ '==', [-name => qw/me.name/], [-value => '200' ] ],
-  ]
-), "WHERE me.id > ? OR me.name = ?", "where clause";
+is $sqla->dispatch(
+  { -type => 'list',
+    args => [
+      { -type => name => args => [qw/me id/] },
+      { -type => name => args => [qw/me foo bar/] },
+      { -type => name => args => [qw/bar/] }
+    ] 
+  }
+), "me.id, me.foo.bar, bar",
+  "List generator";
 
+is $sqla->dispatch(
+  { -type => 'alias', ident => { -type => name => args => [qw/me id/]}, as => "foobar" } 
+), "me.id AS foobar",
+  "Alias generator";
 
-is SQL::Abstract->generate(
-  [ -where =>  -or =>
-      [ '>', [-name => qw/me.id/], [-value => 500 ] ],
-      [ -or => 
-        [ '==', [-name => qw/me.name/], [-value => '200' ] ],
-        [ '==', [-name => qw/me.name/], [-value => '100' ] ]
-      ]
-  ]
-), "WHERE me.id > ? OR me.name = ? OR me.name = ?", "where clause";
 
-is SQL::Abstract->generate(
-  [ -where =>  -or =>
-      [ '==', [-name => qw/me.id/], [-value => 500 ] ],
-      [ -and => 
-        [ '>', [-name => qw/me.name/], [-value => '200' ] ],
-        [ '<', [-name => qw/me.name/], [-value => '100' ] ]
-      ]
-  ]
-), "WHERE me.id = ? OR (me.name > ? AND me.name < ?)", "where clause";