Showing 2 changed files with 23 additions and 4 deletions
+1 -1
lib/DBIx/Custom/Result.pm
... ...
@@ -56,7 +56,7 @@ sub fetch_hash {
56 56
     # Filter
57 57
     my $row_hash = {};
58 58
     for (my $i = 0; $i < @$columns; $i++) {
59
-        my $fname  = $filter->{$columns->[$i]} || $filters->{$default_filter} || '';
59
+        my $fname  = $filter->{$columns->[$i]} || $default_filter || '';
60 60
         my $filter = $filters->{$fname};
61 61
         $row_hash->{$columns->[$i]} = $filter
62 62
                                     ? $filter->($row->[$i])
+22 -3
t/dbix-custom-core-sqlite.t
... ...
@@ -37,7 +37,7 @@ my $NEW_ARGS = {
37 37
     0 => {data_source => 'dbi:SQLite:dbname=:memory:'}
38 38
 };
39 39
 
40
-# Variables for test
40
+# Variables
41 41
 my $dbi;
42 42
 my $sth;
43 43
 my $tmpl;
... ...
@@ -48,6 +48,7 @@ my $update_tmpl;
48 48
 my $params;
49 49
 my $sql;
50 50
 my $result;
51
+my $row;
51 52
 my @rows;
52 53
 my $rows;
53 54
 my $query;
... ...
@@ -310,11 +311,16 @@ $rows   = $result->fetch_hash_all;
310 311
 is_deeply($rows, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], "$test : basic");
311 312
 
312 313
 $dbi->execute('delete from table1');
313
-$dbi->resist_filter(three_times => sub { $_[0] * 3});
314
+$dbi->resist_filter(
315
+    twice       => sub { $_[0] * 2 },
316
+    three_times => sub { $_[0] * 3 }
317
+);
318
+$dbi->default_query_filter('twice');
314 319
 $dbi->insert('table1', {key1 => 1, key2 => 2}, {filter => {key1 => 'three_times'}});
315 320
 $result = $dbi->execute($SELECT_TMPLS->{0});
316 321
 $rows   = $result->fetch_hash_all;
317
-is_deeply($rows, [{key1 => 3, key2 => 2}], "$test : filter");
322
+is_deeply($rows, [{key1 => 3, key2 => 4}], "$test : filter");
323
+$dbi->default_query_filter(undef);
318 324
 
319 325
 $dbi->execute($DROP_TABLE->{0});
320 326
 $dbi->execute($CREATE_TABLE->{0});
... ...
@@ -518,4 +524,17 @@ $query->filter('bbb');
518 524
 $query = $dbi->create_query($tmpls[0]);
519 525
 ok(!$query->filter, "$test : only cached sql and columns");
520 526
 
527
+test 'fetch filter';
528
+$dbi = DBIx::Custom->new($NEW_ARGS->{0});
529
+$dbi->resist_filter(
530
+    twice       => sub { $_[0] * 2 },
531
+    three_times => sub { $_[0] * 3 }
532
+);
533
+$dbi->default_fetch_filter('twice');
534
+$dbi->execute($CREATE_TABLE->{0});
535
+$dbi->insert('table1', {key1 => 1, key2 => 2});
536
+$result = $dbi->select('table1');
537
+$result->filter({key1 => 'three_times'});
538
+$row = $result->fetch_hash_single;
539
+is_deeply($row, {key1 => 3, key2 => 4}, "$test: default_fetch_filter and filter");
521 540