X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F60core.t;h=f92159b290128fadf702c3b87ba0f3f0f03f6623;hb=313510884be3d00975ae50f42af4f585eb29ae80;hp=dc6250057d16b91035427f3effef11f56cc70949;hpb=02ddfe6e0a249c0805e9116f302edae02510c2b9;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/t/60core.t b/t/60core.t index dc62500..f92159b 100644 --- a/t/60core.t +++ b/t/60core.t @@ -5,8 +5,7 @@ use Test::More; use Test::Exception; use Test::Warn; use lib qw(t/lib); -use DBICTest; -use DBIC::SqlMakerTest; +use DBICTest ':DiffSQL'; my $schema = DBICTest->init_schema(); @@ -131,6 +130,13 @@ throws_ok { is($schema->resultset("Artist")->count, 4, 'count ok'); +# test find on an unresolvable condition +is( + $schema->resultset('Artist')->find({ artistid => [ -and => 1, 2 ]}), + undef +); + + # test find_or_new { my $existing_obj = $schema->resultset('Artist')->find_or_new({ @@ -243,7 +249,7 @@ is($schema->class("Artist")->field_name_for->{name}, 'artist name', 'mk_classdat my $search = [ { 'tags.tag' => 'Cheesy' }, { 'tags.tag' => 'Blue' } ]; -my( $or_rs ) = $schema->resultset("CD")->search_rs($search, { join => 'tags', +my $or_rs = $schema->resultset("CD")->search_rs($search, { join => 'tags', order_by => 'cdid' }); is($or_rs->all, 5, 'Joined search with OR returned correct number of rows'); is($or_rs->count, 5, 'Search count with OR ok'); @@ -253,11 +259,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( @@ -290,7 +298,7 @@ warnings_exist (sub { my $tag_rs = $schema->resultset('Tag')->search( [ { 'me.tag' => 'Cheesy' }, { 'me.tag' => 'Blue' } ]); -my $rel_rs = $tag_rs->search_related('cd'); +my $rel_rs = $tag_rs->search_related('cd', {}, { order_by => 'cd.cdid'} ); is($rel_rs->count, 5, 'Related search ok'); @@ -298,6 +306,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' } ], { columns => 'tagid' }