From: Guillermo Roditi Date: Tue, 22 May 2007 16:24:15 +0000 (+0000) Subject: fix to t/97result_class.t and fixed tests too X-Git-Tag: v0.08010~150^2~54 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=b72d5dd34049102b38ad21afc6fb808a7cba9fd1;p=dbsrgits%2FDBIx-Class.git fix to t/97result_class.t and fixed tests too --- diff --git a/lib/DBIx/Class/ResultSet.pm b/lib/DBIx/Class/ResultSet.pm index 98d660d..fcba759 100644 --- a/lib/DBIx/Class/ResultSet.pm +++ b/lib/DBIx/Class/ResultSet.pm @@ -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, diff --git a/t/97result_class.t b/t/97result_class.t index 820948b..7921158 100644 --- a/t/97result_class.t +++ b/t/97result_class.t @@ -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'); }