result_class is getting leaked somewhere in related_resultset, failing test included
[dbsrgits/DBIx-Class.git] / t / 97result_class.t
1 use strict;
2 use warnings;  
3
4 use Test::More;
5 use lib qw(t/lib);
6 use DBICTest;
7
8 my $schema = DBICTest->init_schema();
9
10 plan tests => 7;
11
12 {
13   my $cd_rc = $schema->resultset("CD")->result_class;
14   
15   my $artist_rs = $schema->resultset("Artist")
16     ->search_rs({}, {result_class => "IWillExplode"});
17   is($artist_rs->result_class, 'IWillExplode', 'Correct artist result_class');
18   
19   my $cd_rs = $artist_rs->related_resultset('cds');
20   is($cd_rs->result_class, $cd_rc, 'Correct cd result_class');
21   
22   isa_ok(eval {$cd_rs->find(1) }, $cd_rc, 'Inflated into correct cd result_class');
23 }
24
25
26 {
27   my $cd_rc = $schema->resultset("CD")->result_class;
28   
29   my $artist_rs = $schema->resultset("Artist")
30     ->search_rs({}, {result_class => "IWillExplode"})->search({artistis => 1});
31   is($artist_rs->result_class, 'IWillExplode', 'Correct artist result_class');
32   
33   my $cd_rs = $artist_rs->related_resultset('cds');
34   is($cd_rs->result_class, $cd_rc, 'Correct cd result_class');
35   
36   isa_ok(eval{ $cd_rs->find(1) }, $cd_rc, 'Inflated into correct cd result_class');   
37   isa_ok(eval { $cd_rs->search({ cdid => 1 })->first}, $cd_rc, 'Inflated into correct cd result_class');
38 }