Bei tiefen parse_filters with_objects mit prefix bauen.
authorSven Schöling <s.schoeling@linet-services.de>
Thu, 22 Dec 2011 11:41:15 +0000 (12:41 +0100)
committerSven Schöling <s.schoeling@linet-services.de>
Mon, 2 Jan 2012 14:40:40 +0000 (15:40 +0100)
SL/Controller/Helper/ParseFilter.pm
t/controllers/helpers/parse_filter.t

index ac086f5..7c393b0 100644 (file)
@@ -74,7 +74,7 @@ sub _pre_parse {
     if ('HASH' eq ref $value) {
       my ($query, $more_objects) = _pre_parse($value, $with_objects, _prefix($prefix, $key));
       push @result,        @$query if $query;
-      push @$with_objects, $key, ($more_objects ? @$more_objects : ());
+      push @$with_objects, _prefix($prefix, $key), ($more_objects ? @$more_objects : ());
     } else {
       push @result, _prefix($prefix, $key) => $value;
     }
index 1988773..554985d 100644 (file)
@@ -58,7 +58,7 @@ test {
   }
 }, {
   query => [ 'customer.chart.accno' => 'test' ],
-  with_objects => bag( 'customer', 'chart' ),
+  with_objects => bag( 'customer', 'customer.chart' ),
 }, 'nested joins';
 
 test {
@@ -82,7 +82,7 @@ test {
 },
 {
   query => [ 'customer.chart.accno' => { like => '%1200' } ],
-  with_objects => bag('customer', 'chart' ),
+  with_objects => bag('customer', 'customer.chart' ),
 }, 'all together';
 
 
@@ -100,7 +100,7 @@ test {
                'invoice.customer.name'  => 'test',
                'customer.name'          => 'test',
              }} ],
-  'with_objects' => bag( 'invoice', 'customer' )
+  'with_objects' => bag( 'invoice.customer', 'customer', 'invoice' )
 }, 'object in more than one relationship';
 
 test {
@@ -177,3 +177,16 @@ test {
   }
 }, 'deep laundering, check for laundered hash', target => 'launder', launder_to => { };
 
+### bug: sub objects
+
+test {
+  order => {
+    customer => {
+      'name:substr::ilike' => 'test',
+    }
+  }
+}, {
+  query => [ 'order.customer.name' => { ilike => '%test%' } ],
+  with_objects => bag('order.customer', 'order'),
+}, 'sub objects have to retain their prefix';
+