fix to t/97result_class.t and fixed tests too
Guillermo Roditi [Tue, 22 May 2007 16:24:15 +0000 (16:24 +0000)]
lib/DBIx/Class/ResultSet.pm
t/97result_class.t

index 98d660d..fcba759 100644 (file)
@@ -1618,9 +1618,13 @@ sub related_resultset {
     my $join_count = $seen->{$rel};
     my $alias = ($join_count > 1 ? join('_', $rel, $join_count) : $rel);
 
+    #XXX - temp fix for result_class bug. There likely is a more elegant fix -groditi
+    my %attrs = %{$self->{attrs}||{}};
+    delete $attrs{result_class};
+
     $self->_source_handle->schema->resultset($rel_obj->{class})->search_rs(
       undef, {
-        %{$self->{attrs}||{}},
+        %attrs,
         join => undef,
         prefetch => undef,
         select => undef,
index 820948b..7921158 100644 (file)
@@ -7,7 +7,7 @@ use DBICTest;
 
 my $schema = DBICTest->init_schema();
 
-plan tests => 7;
+plan tests => 9;
 
 {
   my $cd_rc = $schema->resultset("CD")->result_class;
@@ -18,8 +18,14 @@ plan tests => 7;
   
   my $cd_rs = $artist_rs->related_resultset('cds');
   is($cd_rs->result_class, $cd_rc, 'Correct cd result_class');
+
+  my $cd_rs2 = $schema->resultset("Artist")->search_rs({})->related_resultset('cds');
+  is($cd_rs->result_class, $cd_rc, 'Correct cd2 result_class');
+
+  my $cd_rs3 = $schema->resultset("Artist")->search_rs({},{})->related_resultset('cds');
+  is($cd_rs->result_class, $cd_rc, 'Correct cd3 result_class');
   
-  isa_ok(eval {$cd_rs->find(1) }, $cd_rc, 'Inflated into correct cd result_class');
+  isa_ok(eval{ $cd_rs->find(1) }, $cd_rc, 'Inflated into correct cd result_class');
 }
 
 
@@ -27,12 +33,12 @@ plan tests => 7;
   my $cd_rc = $schema->resultset("CD")->result_class;
   
   my $artist_rs = $schema->resultset("Artist")
-    ->search_rs({}, {result_class => "IWillExplode"})->search({artistis => 1});
+    ->search_rs({}, {result_class => "IWillExplode"})->search({artistid => 1});
   is($artist_rs->result_class, 'IWillExplode', 'Correct artist result_class');
   
   my $cd_rs = $artist_rs->related_resultset('cds');
   is($cd_rs->result_class, $cd_rc, 'Correct cd result_class');
   
   isa_ok(eval{ $cd_rs->find(1) }, $cd_rc, 'Inflated into correct cd result_class');   
-  isa_ok(eval { $cd_rs->search({ cdid => 1 })->first}, $cd_rc, 'Inflated into correct cd result_class');
+  isa_ok(eval{ $cd_rs->search({ cdid => 1 })->first }, $cd_rc, 'Inflated into correct cd result_class');
 }