X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F60core.t;h=ffb7d1340802417b9ba2f0dba9cb9b0503b2adde;hb=1e4f9fb3b8bd1f54518bc2942554099356fa6524;hp=630ef8e105058208ef8d640480ebbd6d1464a8e3;hpb=53998003f729b85b27a9e981875cfe5c753e0d28;p=dbsrgits%2FDBIx-Class.git diff --git a/t/60core.t b/t/60core.t index 630ef8e..ffb7d13 100644 --- a/t/60core.t +++ b/t/60core.t @@ -106,7 +106,7 @@ is($new_again->name, 'Man With A Spoon', 'Retrieved correctly'); is($new_again->ID, 'DBICTest::Artist|artist|artistid=4', 'unique object id generated correctly'); -# test that store_column is called once for create() for non sequence columns +# test that store_column is called once for create() for non sequence columns { ok(my $artist = $schema->resultset('Artist')->create({name => 'store_column test'})); is($artist->name, 'X store_column test'); # used to be 'X X store...' @@ -253,11 +253,13 @@ is ($collapsed_or_rs->all, 4, 'Collapsed joined search with OR returned correct is ($collapsed_or_rs->count, 4, 'Collapsed search count with OR ok'); # make sure sure distinct on a grouped rs is warned about -my $cd_rs = $schema->resultset ('CD') - ->search ({}, { distinct => 1, group_by => 'title' }); -warnings_exist (sub { - $cd_rs->next; -}, qr/Useless use of distinct/, 'UUoD warning'); +{ + my $cd_rs = $schema->resultset ('CD') + ->search ({}, { distinct => 1, group_by => 'title' }); + warnings_exist (sub { + $cd_rs->next; + }, qr/Useless use of distinct/, 'UUoD warning'); +} { my $tcount = $schema->resultset('Track')->search( @@ -284,7 +286,7 @@ warnings_exist (sub { group_by => [ qw/position title/ ] } ); - is($tcount->count, 13, 'multiple column COUNT DISTINCT using column syntax ok'); + is($tcount->count, 13, 'multiple column COUNT DISTINCT using column syntax ok'); } my $tag_rs = $schema->resultset('Tag')->search( @@ -298,6 +300,14 @@ is($or_rs->next->cdid, $rel_rs->next->cdid, 'Related object ok'); $or_rs->reset; $rel_rs->reset; +# at this point there should be no active statements +# (finish() was called everywhere, either explicitly via +# reset() or on DESTROY) +for (keys %{$schema->storage->dbh->{CachedKids}}) { + fail("Unreachable cached statement still active: $_") + if $schema->storage->dbh->{CachedKids}{$_}->FETCH('Active'); +} + my $tag = $schema->resultset('Tag')->search( [ { 'me.tag' => 'Blue' } ], { cols=>[qw/tagid/] } )->next; @@ -335,7 +345,7 @@ ok($schema->storage(), 'Storage available'); my @artsn = $schema->resultset('SourceNameArtists')->search({}, { order_by => 'name DESC' }); is(@artsn, 4, "Four artists returned"); - + # make sure subclasses that don't set source_name are ok ok($schema->source('ArtistSubclass'), 'ArtistSubclass exists'); } @@ -519,12 +529,55 @@ lives_ok (sub { my $newlink = $newbook->link}, "stringify to false value doesn't } +# make sure that obsolete handle-based source tracking continues to work for the time being +{ + my $handle = $schema->source('Artist')->handle; + + my $rowdata = { $schema->resultset('Artist')->next->get_columns }; + + my $rs = DBIx::Class::ResultSet->new($handle); + my $rs_result = $rs->next; + isa_ok( $rs_result, 'DBICTest::Artist' ); + is_deeply ( + { $rs_result->get_columns }, + $rowdata, + 'Correct columns retrieved (rset/source link healthy)' + ); + + my $row = DBICTest::Artist->new({ -source_handle => $handle }); + is_deeply( + { $row->get_columns }, + {}, + 'No columns yet' + ); + + # store_column to fool the _orig_ident tracker + $row->store_column('artistid', $rowdata->{artistid}); + $row->in_storage(1); + + $row->discard_changes; + is_deeply( + { $row->get_columns }, + $rowdata, + 'Storage refetch successful' + ); +} + +# test to make sure that calling ->new() on a resultset object gives +# us a row object +{ + my $new_artist = $schema->resultset('Artist')->new({}); + isa_ok( $new_artist, 'DBIx::Class::Row', '$rs->new gives a row object' ); +} + + # make sure we got rid of the compat shims SKIP: { - skip "Remove in 0.082", 3 if $DBIx::Class::VERSION < 0.082; + my $remove_version = 0.083; + skip "Remove in $remove_version", 3 if $DBIx::Class::VERSION < $remove_version; for (qw/compare_relationship_keys pk_depends_on resolve_condition/) { - ok (! DBIx::Class::ResultSource->can ($_), "$_ no longer provided by DBIx::Class::ResultSource"); + ok (! DBIx::Class::ResultSource->can ($_), "$_ no longer provided by DBIx::Class::ResultSource, removed before $remove_version"); } }