fix placeholder surround and add complex test
Arthur Axel "fREW" Schmidt [Fri, 15 Oct 2010 00:31:47 +0000 (00:31 +0000)]
lib/SQL/Abstract/Tree.pm
t/15placeholders.t

index 8805828..092d88a 100644 (file)
@@ -367,11 +367,11 @@ sub fill_in_placeholder {
    my ($self, $bindargs) = @_;
 
    if ($self->fill_in_placeholders) {
-      my $val = pop @{$bindargs} || '';
+      my $val = shift @{$bindargs} || '';
       my ($left, $right) = @{$self->placeholder_surround};
       $val =~ s/\\/\\\\/g;
       $val =~ s/'/\\'/g;
-      return qq('$left$val$right')
+      return qq($left$val$right)
    }
    return '?'
 }
index bba9b66..4ee0db8 100644 (file)
@@ -12,7 +12,7 @@ my $placeholders = ['station', 'lolz'];
       placeholder_surround => [qw(; -)],
    });
 
-   is($sqlat->fill_in_placeholder($placeholders), q(';lolz-'),
+   is($sqlat->fill_in_placeholder($placeholders), q(;lolz-),
       'placeholders are populated correctly'
    );
 }
@@ -23,9 +23,20 @@ my $placeholders = ['station', 'lolz'];
       placeholder_surround => [qw(< >)],
    });
 
-   is($sqlat->fill_in_placeholder($placeholders), q('<station>'),
+   is($sqlat->fill_in_placeholder($placeholders), q(<station>),
       'placeholders are populated correctly and in order'
    );
 }
 
+
+{
+   my $sqlat = SQL::Abstract::Tree->new({
+      fill_in_placeholders => 1,
+      placeholder_surround => [qw(' ')],
+   });
+
+   is $sqlat->format('SELECT ? as x, ? as y FROM Foo WHERE t > ? and z IN (?, ?, ?) ', ['frew', 'ribasushi', '2008-12-12', 1, 2, 3]),
+   q[SELECT 'frew' as x, 'ribasushi' as y FROM Foo WHERE t > '2008-12-12' AND z IN ('1', '2', '3')], 'Complex placeholders work';
+}
+
 done_testing;