bef44c17ec55c4b504457a3c019acb4a150bd859
[dbsrgits/Data-Query.git] / t / expr-helpers.t
1 use strictures 1;
2 use Test::More qw(no_plan);
3
4 use Devel::Dwarn;
5 use Data::Query::Renderer::SQL::Naive;
6 use Data::Query::ExprHelpers;
7
8 my $rend = Data::Query::Renderer::SQL::Naive->new({ quote_chars => [ "'" ] });
9
10 sub binding { map perl_scalar_value($_), @_ }
11
12 sub dq_sql_is {
13   my $expr = shift;
14 #::Dwarn($expr); return;
15   my $rendered = $rend->render($expr);
16   is_deeply($rendered, @_);
17 }
18
19 dq_sql_is 
20   Select([ Identifier('*') ], Identifier('foo')),
21   ['SELECT * FROM foo'],
22   'simple select';
23
24 dq_sql_is
25   Join(
26     Select([ Identifier('*') ], Identifier('foo')),
27     Identifier('bar'),
28     perl_operator('==', Identifier('foo', 'x'), Identifier('bar', 'y'))
29   ),
30   ['SELECT * FROM foo JOIN bar ON foo.x = bar.y'],
31   'join on with dots';
32
33 dq_sql_is 
34   Where(
35     perl_operator(
36       '==',
37       Identifier('x'),
38       Literal('SQL', '?', [ binding(1) ],),
39     ),
40     Select([ Identifier('*') ], Identifier('foo')),
41   ),
42   ['SELECT * FROM foo WHERE x = ?', binding(1)],
43   'simple select with where and bind';
44