X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F83cache.t;h=9edfe713799966c0feb33eb8da1a2d0fdcf4b825;hb=98fcc1c08b73df1c66c41fb4cc736e824e9e4026;hp=f220a35e1774325965421217af9b21b1d34065b3;hpb=a2287768f5c3dd665c469d7f9dfe99d369ff6781;p=dbsrgits%2FDBIx-Class.git diff --git a/t/83cache.t b/t/83cache.t index f220a35..9edfe71 100644 --- a/t/83cache.t +++ b/t/83cache.t @@ -1,5 +1,5 @@ use strict; -use warnings; +use warnings; use Test::More; use lib qw(t/lib); @@ -8,7 +8,7 @@ use DBICTest; my $schema = DBICTest->init_schema(); my $queries; -$schema->storage->debugcb( sub{ $queries++ } ); +my $debugcb = sub{ $queries++ }; my $sdebug = $schema->storage->debug; plan tests => 23; @@ -45,6 +45,7 @@ $rs->clear_cache; $queries = 0; $schema->storage->debug(1); +$schema->storage->debugcb ($debugcb); $rs = $schema->resultset('Artist')->search( undef, { cache => 1 } ); while( $artist = $rs->next ) {} @@ -53,6 +54,7 @@ $artist = $rs->first(); is( $queries, 1, 'revisiting a row does not issue a query when cache => 1' ); $schema->storage->debug($sdebug); +$schema->storage->debugcb (undef); my @a = $schema->resultset("Artist")->search( { }, @@ -72,11 +74,10 @@ $rs = $schema->resultset("Artist")->search( } ); -use Data::Dumper; $Data::Dumper::Deparse = 1; - # start test for prefetch SELECT count $queries = 0; $schema->storage->debug(1); +$schema->storage->debugcb ($debugcb); $artist = $rs->first; $rs->reset(); @@ -99,6 +100,7 @@ is( $artist->count_related('cds'), 3, 'artist->count_related returns correct val is($queries, 1, 'only one SQL statement executed'); $schema->storage->debug($sdebug); +$schema->storage->debugcb (undef); # make sure related_resultset is deleted after object is updated $artist->set_column('name', 'New Name'); @@ -114,6 +116,7 @@ $rs = $schema->resultset("Artist")->search( prefetch => { cds => 'tags' }, + order_by => { -desc => 'cds.cdid' }, } ); { @@ -130,19 +133,15 @@ is($artist->cds, 0, 'No cds for this artist'); # SELECT count for nested has_many prefetch $queries = 0; $schema->storage->debug(1); +$schema->storage->debugcb ($debugcb); $artist = ($rs->all)[0]; is($queries, 1, 'only one SQL statement executed'); -$schema->storage->debug($sdebug); - -my @objs; -#$artist = $rs->find(1); - $queries = 0; -$schema->storage->debug(1); +my @objs; my $cds = $artist->cds; my $tags = $cds->next->tags; while( my $tag = $tags->next ) { @@ -157,7 +156,7 @@ while( my $tag = $tags->next ) { push @objs, $tag->id; #warn "tag: ", $tag->ID; } -is_deeply( \@objs, [ 1 ], 'second cd has correct tags' ); +is_deeply( [ sort @objs] , [ 2, 5, 8 ], 'third cd has correct tags' ); $tags = $cds->next->tags; @objs = (); @@ -165,7 +164,7 @@ while( my $tag = $tags->next ) { push @objs, $tag->id; #warn "tag: ", $tag->ID; } -is_deeply( \@objs, [ 2, 5, 8 ], 'third cd has correct tags' ); +is_deeply( \@objs, [ 1 ], 'second cd has correct tags' ); is( $queries, 0, 'no additional SQL statements while checking nested data' ); @@ -185,4 +184,4 @@ $artist = $rs->find(1); is( $queries, 1, 'only one select statement on find with has_many prefetch on resultset' ); $schema->storage->debug($sdebug); - +$schema->storage->debugcb (undef);