X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F60core.t;h=d4fc083d305d15f447f438f6c9ba5ee41ccbf1aa;hb=3fc4b39ed9cb03c5397a6581a77bfcbcd450470c;hp=de290de7f4db9157e098aafd8c141859c7703d45;hpb=11d68671189252ea241d119283f75d074cd4457c;p=dbsrgits%2FDBIx-Class.git diff --git a/t/60core.t b/t/60core.t index de290de..d4fc083 100644 --- a/t/60core.t +++ b/t/60core.t @@ -5,27 +5,15 @@ use Test::More; use Test::Exception; use lib qw(t/lib); use DBICTest; +use DBIC::SqlMakerTest; my $schema = DBICTest->init_schema(); -plan tests => 96; +plan tests => 103; -eval { require DateTime::Format::MySQL }; +eval { require DateTime::Format::SQLite }; my $NO_DTFM = $@ ? 1 : 0; -# figure out if we've got a version of sqlite that is older than 3.2.6, in -# which case COUNT(DISTINCT()) doesn't work -my $is_broken_sqlite = 0; -my ($sqlite_major_ver,$sqlite_minor_ver,$sqlite_patch_ver) = - split /\./, $schema->storage->dbh->get_info(18); -if( $schema->storage->dbh->get_info(17) eq 'SQLite' && - ( ($sqlite_major_ver < 3) || - ($sqlite_major_ver == 3 && $sqlite_minor_ver < 2) || - ($sqlite_major_ver == 3 && $sqlite_minor_ver == 2 && $sqlite_patch_ver < 6) ) ) { - $is_broken_sqlite = 1; -} - - my @art = $schema->resultset("Artist")->search({ }, { order_by => 'name DESC'}); is(@art, 3, "Three artists returned"); @@ -207,7 +195,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; @@ -234,16 +222,14 @@ my $search = [ { 'tags.tag' => 'Cheesy' }, { 'tags.tag' => 'Blue' } ]; 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'); -is($or_rs->count, 5, 'Search with OR ok'); - -my $distinct_rs = $schema->resultset("CD")->search($search, { join => 'tags', distinct => 1 }); -is($distinct_rs->all, 4, 'DISTINCT search with OR ok'); - -SKIP: { - skip "SQLite < 3.2.6 doesn't understand COUNT(DISTINCT())", 2 - if $is_broken_sqlite; +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 $tcount = $schema->resultset('Track')->search( {}, { @@ -389,7 +375,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'); @@ -413,3 +399,12 @@ SKIP: { $en_row->insert; is($en_row->encoded, 'amliw', 'insert does not encode again'); } + +# make sure we got rid of the compat shims +SKIP: { + skip "Remove in 0.09", 5 if $DBIx::Class::VERSION < 0.09; + + for (qw/compare_relationship_keys pk_depends_on resolve_condition resolve_join resolve_prefetch/) { + ok (! DBIx::Class::ResultSource->can ($_), "$_ no longer provided by DBIx::Class::ResultSource"); + } +}