X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F02where.t;h=94ce7d5fd06a787c72b3bf930fdd527561b0b321;hb=bab725ceb3539ee6cff3afba859ec296625a2f9b;hp=b27965191141b6dafa10e0ecb31c7fd7abbc2ab0;hpb=96449e8ea5159e5448ebfc81dfa200dc674f366b;p=dbsrgits%2FSQL-Abstract.git diff --git a/t/02where.t b/t/02where.t index b279651..94ce7d5 100644 --- a/t/02where.t +++ b/t/02where.t @@ -4,19 +4,16 @@ use strict; use warnings; use Test::More; use Test::Exception; - -use FindBin; -use lib "$FindBin::Bin"; -use TestSqlAbstract; - -plan tests => 15; +use SQL::Abstract::Test import => ['is_same_sql_bind']; use SQL::Abstract; # Make sure to test the examples, since having them break is somewhat # embarrassing. :-( -my @handle_tests = ( +my $not_stringifiable = bless {}, 'SQLA::NotStringifiable'; + +my@x=( { where => { requestor => 'inna', @@ -30,6 +27,15 @@ my @handle_tests = ( }, { + where => [ + status => 'completed', + user => 'nwiger', + ], + stmt => " WHERE ( status = ? OR user = ? )", + bind => [qw/completed nwiger/], + }, + + { where => { user => 'nwiger', status => 'completed' @@ -178,16 +184,46 @@ my @handle_tests = ( stmt => " WHERE ( (bar > ? AND bar < ?) AND foo IN (?, ?) )", bind => [44, 55, 22, 33], }, - + { + where => { -and => [{}, { 'me.id' => '1'}] }, + stmt => " WHERE ( ( me.id = ? ) )", + bind => [ 1 ], + }, + + { + where => { foo => $not_stringifiable, }, + stmt => " WHERE ( foo = ? )", + bind => [ $not_stringifiable ], + }, + +);my @handle_tests = ( + { + where => \[ 'foo ?','bar' ], + stmt => " WHERE (foo = ?)", + bind => [ "bar" ], + }, +);my@x2=( + + { + where => [ \[ 'foo ?','bar' ] ], + stmt => " WHERE (foo = ?)", + bind => [ "bar" ], + }, ); + +plan tests => ( @handle_tests * 2 ) + 1; + for my $case (@handle_tests) { my $sql = SQL::Abstract->new; - my($stmt, @bind) = $sql->where($case->{where}, $case->{order}); - is_same_sql_bind($stmt, \@bind, $case->{stmt}, $case->{bind}) + my($stmt, @bind); + lives_ok (sub { + ($stmt, @bind) = $sql->where($case->{where}, $case->{order}); + is_same_sql_bind($stmt, \@bind, $case->{stmt}, $case->{bind}); + }); } dies_ok { my $sql = SQL::Abstract->new; $sql->where({ foo => { '>=' => [] }},); -} +};