X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F60core.t;h=d4303982b4fc95b51433b5a3cc6160367d0158c3;hb=bfa46eb523fff8ece9b37a48d17b90510f1c8c52;hp=629d49d7c064f9087c116a8f06c8900606921642;hpb=b49cd082958aea8c2899ab46c56975c38c232fc2;p=dbsrgits%2FDBIx-Class.git diff --git a/t/60core.t b/t/60core.t index 629d49d..d430398 100644 --- a/t/60core.t +++ b/t/60core.t @@ -9,9 +9,7 @@ use DBIC::SqlMakerTest; my $schema = DBICTest->init_schema(); -plan tests => 106; - -eval { require DateTime::Format::MySQL }; +eval { require DateTime::Format::SQLite }; my $NO_DTFM = $@ ? 1 : 0; my @art = $schema->resultset("Artist")->search({ }, { order_by => 'name DESC'}); @@ -195,7 +193,7 @@ is( $schema->resultset("Track")->find(100)->title, 'Insert or Update - updated', # get_inflated_columns w/relation and accessor alias SKIP: { - skip "This test requires DateTime::Format::MySQL", 8 if $NO_DTFM; + skip "This test requires DateTime::Format::SQLite", 8 if $NO_DTFM; isa_ok($new->updated_date, 'DateTime', 'have inflated object via accessor'); my %tdata = $new->get_inflated_columns; @@ -229,20 +227,6 @@ my $collapsed_or_rs = $or_rs->search ({}, { distinct => 1 }); # induce collapse is ($collapsed_or_rs->all, 4, 'Collapsed joined search with OR returned correct number of rows'); is ($collapsed_or_rs->count, 4, 'Collapsed search count with OR ok'); -my $pref_or_rs = $collapsed_or_rs->search ({}, { prefetch => [qw/tags/] }); -is_same_sql_bind ( - $pref_or_rs->as_query, - '(SELECT me.cdid, me.artist, me.title, me.year, me.genreid, me.single_track, tags.tagid, tags.cd, tags.tag FROM cd me LEFT JOIN tags tags ON tags.cd = me.cdid WHERE ( ( tags.tag = ? OR tags.tag = ? ) ) GROUP BY me.cdid, me.artist, me.title, me.year, me.genreid, me.single_track, tags.tagid, tags.cd, tags.tag ORDER BY cdid, tags.cd, tags.tag)', - [ - [ 'tags.tag' => 'Cheesy' ], - [ 'tags.tag' => 'Blue' ], - ], - 'Prefetch + distinct resulted in correct group_by', -); -is ($pref_or_rs->all, 4, 'Prefetched grouped search with OR returned correct number of rows'); -is ($pref_or_rs->count, 4, 'Prefetched grouped count with OR ok'); - - { my $tcount = $schema->resultset('Track')->search( {}, @@ -389,7 +373,7 @@ lives_ok (sub { my $newlink = $newbook->link}, "stringify to false value doesn't # test get_inflated_columns with objects SKIP: { - skip "This test requires DateTime::Format::MySQL", 5 if $NO_DTFM; + skip "This test requires DateTime::Format::SQLite", 5 if $NO_DTFM; my $event = $schema->resultset('Event')->search->first; my %edata = $event->get_inflated_columns; is($edata{'id'}, $event->id, 'got id'); @@ -422,3 +406,52 @@ SKIP: { ok (! DBIx::Class::ResultSource->can ($_), "$_ no longer provided by DBIx::Class::ResultSource"); } } + +#------------------------------ +# READ THIS BEFORE "FIXING" +#------------------------------ +# +# make sure we got rid of discard_changes mess - this is a mess and a source +# of great confusion. Here I simply die if the methods are available, which +# is wrong on its own (we *have* to provide some sort of back-compat, even +# if with warnings). Here is how I envision things should actually be. Also +# note that a lot of the deprecation can be started today (i.e. the switch +# from get_from_storage to copy_from_storage). So: +# +# $row->discard_changes => +# warning, and delegation to reload_from_storage +# +# $row->reload_from_storage => +# does what discard changes did in 0.08 - issues a query to the db +# and repopulates all column slots, regardless of dirty states etc. +# +# $row->revert_changes => +# does what discard_changes should have done initially (before it became +# a dual-purpose call). In order to make this work we will have to +# augment $row to carry its own initial-state, much like svn has a +# copy of the current checkout in contrast to cvs. +# +# my $db_row = $row->get_from_storage => +# warns and delegates to an improved name copy_from_storage, with the +# same semantics +# +# my $db_row = $row->copy_from_storage => +# a much better/descriptive name than get_from_storage +# +#------------------------------ +# READ THIS BEFORE "FIXING" +#------------------------------ +# +SKIP: { + skip "Something needs to be done before 0.09", 2 if $DBIx::Class::VERSION < 0.09; + + my $row = $schema->resultset ('Artist')->next; + + for (qw/discard_changes get_from_storage/) { + ok (! $row->can ($_), "$_ needs *some* sort of facelift before 0.09 ships - current state of affairs is unacceptable"); + } +} + +throws_ok { $schema->resultset} qr/resultset\(\) expects a source name/, 'resultset with no argument throws exception'; + +done_testing;