Institute a central "load this first in testing" package
[dbsrgits/DBIx-Class-Historic.git] / t / search / stack_cond.t
index a68f692..4c06a5d 100644 (file)
@@ -1,8 +1,10 @@
+BEGIN { do "./t/lib/ANFANG.pm" or die ( $@ || $! ) }
+
 use strict;
 use warnings;
 
 use Test::More;
-use lib qw(t/lib);
+
 use DBICTest ':DiffSQL';
 use SQL::Abstract qw(is_plain_value is_literal_value);
 use List::Util 'shuffle';
@@ -35,8 +37,10 @@ for my $c (
   my $bare_cond = is_literal_value($c->{cond}) ? { '=', $c->{cond} } : $c->{cond};
 
   my @query_steps = (
-    # this is a monkey-wrench, always there
+    # these are monkey-wrenches, always there
     { title => { '!=', [ -and => \'bar' ] }, year => { '!=', [ -and => 'bar' ] } },
+    { -or => [ genreid => undef, genreid => { '!=' => \42 } ] },
+    { -or => [ genreid => undef, genreid => { '!=' => \42 } ] },
 
     { title => $bare_cond, year => { '=', $c->{cond} } },
     { -and => [ year => $bare_cond, { title => { '=', $c->{cond} } } ] },
@@ -48,9 +52,9 @@ for my $c (
 
   if (my $v = is_plain_value($c->{cond})) {
     push @query_steps,
-      { year => $v->[0] },
-      { title => $v->[0] },
-      { -and => [ year => $v->[0], title => $v->[0] ] },
+      { year => $$v },
+      { title => $$v },
+      { -and => [ year => $$v, title => $$v ] },
     ;
   }
 
@@ -69,7 +73,18 @@ for my $c (
     "(
       SELECT me.title
         FROM cd me
-      WHERE title != bar AND title $c->{sql} AND year != ? AND year $c->{sql}
+      WHERE
+        ( genreid != 42 OR genreid IS NULL )
+          AND
+        ( genreid != 42 OR genreid IS NULL )
+          AND
+        title != bar
+          AND
+        title $c->{sql}
+          AND
+        year != ?
+          AND
+        year $c->{sql}
     )",
     \@bind,
     'Double condition correctly collapsed for steps' . Dumper \@query_steps,