Hash access no works despite lack of existing accessor method.
Michael G Schwern [Wed, 13 Feb 2008 01:26:10 +0000 (17:26 -0800)]
lib/DBIx/Class/CDBICompat/ColumnsAsHash.pm
t/cdbi-t/columns_as_hashes.t

index 9a006d6..dd02a63 100644 (file)
@@ -54,7 +54,6 @@ sub _make_columns_as_hash {
             warn "Skipping mapping $col to a hash key because it exists";
         }
 
-        next unless $self->can($col);
         tie $self->{$col}, 'DBIx::Class::CDBICompat::Tied::ColumnValue',
             $self, $col;
     }
index a355291..70f887e 100644 (file)
@@ -7,7 +7,7 @@ use Test::Warn;
 BEGIN {
   eval "use DBIx::Class::CDBICompat;";
   plan $@ ? (skip_all => "Class::Trigger and DBIx::ContextualFetch required: $@")
-          : (tests=> 10);
+          : ('no_plan');
 }
 
 use lib 't/testlib';
@@ -66,4 +66,25 @@ warning_is {
     
     is $waves->{rating}, "R";
 }
-    
\ No newline at end of file
+
+
+{
+    no warnings 'redefine';
+    no warnings 'once';
+    local *Actor::accessor_name_for = sub {
+        my($class, $col) = @_;
+        return "movie" if lc $col eq "film";
+        return $col;
+    };
+    
+    require Actor;
+    
+    my $actor = Actor->insert({
+        name    => 'Emily Watson',
+        film    => $waves,
+    });
+    
+    ok !eval { $actor->film };
+    is $actor->{film}->id, $waves->id,
+       'hash access still works despite lack of accessor';
+}
\ No newline at end of file