X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F02where.t;h=6d89b8c5a2bbde7c8dd5a8c7775d58f0d5a1afa2;hb=30e28763210ceaba353331164ccc685a9d000ce6;hp=ee5dbd8ab4f04caf4907548d2352f18597b43433;hpb=2fadf08e171ee68c239cec896075428ae21f2232;p=dbsrgits%2FSQL-Abstract.git diff --git a/t/02where.t b/t/02where.t index ee5dbd8..6d89b8c 100644 --- a/t/02where.t +++ b/t/02where.t @@ -1,16 +1,11 @@ -#!/usr/bin/perl - use strict; use warnings; use Test::More; -use Test::Exception; +use Test::Warn; use SQL::Abstract::Test import => [qw(is_same_sql_bind diag_where) ]; use SQL::Abstract; -# Make sure to test the examples, since having them break is somewhat -# embarrassing. :-( - my $not_stringifiable = bless {}, 'SQLA::NotStringifiable'; my @handle_tests = ( @@ -81,9 +76,6 @@ my @handle_tests = ( completion_date => { 'between', ['2002-10-01', '2003-02-06'] }, }, order => \'ticket, requestor', -#LDNOTE: modified parentheses -# -# acked by RIBASUSHI stmt => "WHERE ( ( completion_date BETWEEN ? AND ? ) AND status = ? ) ORDER BY ticket, requestor", bind => [qw/2002-10-01 2003-02-06 completed/], }, @@ -139,11 +131,9 @@ my @handle_tests = ( requestor => { 'like', undef }, }, order => \'requestor, ticket', -#LDNOTE: modified parentheses -# -# acked by RIBASUSHI stmt => " WHERE ( ( priority BETWEEN ? AND ? ) AND requestor IS NULL ) ORDER BY requestor, ticket", bind => [qw/1 3/], + warns => qr/Supplying an undefined argument to 'LIKE' is deprecated/, }, @@ -155,15 +145,11 @@ my @handle_tests = ( '>' => 10, }, }, -# LDNOTE : modified test below, just parentheses differ -# -# acked by RIBASUSHI stmt => " WHERE ( id = ? AND ( num <= ? AND num > ? ) )", bind => [qw/1 20 10/], }, { -# LDNOTE 23.03.09 : modified test below, just parentheses differ where => { foo => {-not_like => [7,8,9]}, fum => {'like' => [qw/a b/]}, nix => {'between' => [100,200] }, @@ -173,6 +159,7 @@ my @handle_tests = ( }, stmt => " WHERE ( ( ( foo NOT LIKE ? ) OR ( foo NOT LIKE ? ) OR ( foo NOT LIKE ? ) ) AND ( ( fum LIKE ? ) OR ( fum LIKE ? ) ) AND ( nix BETWEEN ? AND ? ) AND ( nox NOT BETWEEN ? AND ? ) AND wix IN ( ?, ? ) AND wux NOT IN ( ?, ? ) )", bind => [7,8,9,'a','b',100,200,150,160,'zz','yy','30','40'], + warns => qr/\QA multi-element arrayref as an argument to the inequality op 'NOT LIKE' is technically equivalent to an always-true 1=1/, }, { @@ -403,14 +390,13 @@ my @handle_tests = ( for my $case (@handle_tests) { my $sql = SQL::Abstract->new; - my ($stmt, @bind) = $sql->where($case->{where}, $case->{order}); + my ($stmt, @bind); + warnings_exist { + ($stmt, @bind) = $sql->where($case->{where}, $case->{order}); + } $case->{warns} || []; + is_same_sql_bind($stmt, \@bind, $case->{stmt}, $case->{bind}) || diag_where ( $case->{where} ); } -dies_ok { - my $sql = SQL::Abstract->new; - $sql->where({ foo => { '>=' => [] }},); -}; - done_testing;