From: Daniel Westermann-Clark Date: Wed, 12 Apr 2006 15:03:00 +0000 (+0000) Subject: Merge 'trunk' into 'DBIx-Class-current' X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=40db5831746a112e15dec9a3dbabac60e59b76b0;p=dbsrgits%2FDBIx-Class-Historic.git Merge 'trunk' into 'DBIx-Class-current' r8443@fortuna (orig r1442): dwc | 2006-04-11 23:29:12 -0400 POD fix for search.cpan.org r8446@fortuna (orig r1443): dwc | 2006-04-12 11:01:57 -0400 Fix for -and conditions when updating or deleting on a ResultSet --- 40db5831746a112e15dec9a3dbabac60e59b76b0 diff --cc Changes index c33cc68,d06e1bf..ea392d3 --- a/Changes +++ b/Changes @@@ -1,10 -1,8 +1,13 @@@ Revision history for DBIx::Class + - added remove_column(s) to ResultSource/ResultSourceProxy + - added add_column alias to ResultSourceProxy + - added source_name to ResultSource + - load_classes now uses source_name and sets it if necessary + + 0.06002 + - fix for -and conditions when updating or deleting on a ResultSet + 0.06001 - minor fix to update in case of undefined rels - fixes for cascade delete diff --cc t/run/01core.tl index 4634355,c0505c2..1901380 --- a/t/run/01core.tl +++ b/t/run/01core.tl @@@ -1,7 -1,7 +1,7 @@@ sub run_tests { my $schema = shift; - plan tests => 49; -plan tests => 46; ++plan tests => 51; # 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 @@@ -181,42 -181,37 +181,61 @@@ cmp_ok($tag->has_column_loaded('tag'), ok($schema->storage(), 'Storage available'); + { + my $rs = $schema->resultset("Artist")->search({ + -and => [ + artistid => { '>=', 1 }, + artistid => { '<', 3 } + ] + }); + + $rs->update({ name => 'Test _cond_for_update_delete' }); + + my $art; + + $art = $schema->resultset("Artist")->find(1); + is($art->name, 'Test _cond_for_update_delete', 'updated first artist name'); + + $art = $schema->resultset("Artist")->find(2); + is($art->name, 'Test _cond_for_update_delete', 'updated second artist name'); + } + -#test cascade_delete thru many_many relations -my $art_del = $schema->resultset("Artist")->find({ artistid => 1 }); -$art_del->delete; -cmp_ok( $schema->resultset("CD")->search({artist => 1}), '==', 0, 'Cascading through has_many top level.'); -cmp_ok( $schema->resultset("CD_to_Producer")->search({cd => 1}), '==', 0, 'Cascading through has_many children.'); +# test source_name +{ + # source_name should be set for normal modules + is($schema->source('CD')->source_name, 'CD', 'source_name is set to moniker'); + + # test the result source that sets source_name explictly + ok($schema->source('SourceNameArtists'), 'SourceNameArtists result source exists'); + + my @artsn = $schema->resultset('SourceNameArtists')->search({}, { order_by => 'name DESC' }); + cmp_ok(@artsn, '==', 4, "Four artists returned"); +} + +# test cascade_delete through many_to_many relations +{ + my $art_del = $schema->resultset("Artist")->find({ artistid => 1 }); + $art_del->delete; + cmp_ok( $schema->resultset("CD")->search({artist => 1}), '==', 0, 'Cascading through has_many top level.'); + cmp_ok( $schema->resultset("CD_to_Producer")->search({cd => 1}), '==', 0, 'Cascading through has_many children.'); +} + +# test column_info +{ + $schema->source("Artist")->{_columns}{'artistid'} = {}; -$schema->source("Artist")->{_columns}{'artistid'} = {}; + my $typeinfo = $schema->source("Artist")->column_info('artistid'); + is($typeinfo->{data_type}, 'INTEGER', 'column_info ok'); + $schema->source("Artist")->column_info('artistid'); + ok($schema->source("Artist")->{_columns_info_loaded} == 1, 'Columns info flag set'); +} -my $typeinfo = $schema->source("Artist")->column_info('artistid'); -is($typeinfo->{data_type}, 'INTEGER', 'column_info ok'); -$schema->source("Artist")->column_info('artistid'); -ok($schema->source("Artist")->{_columns_info_loaded} == 1, 'Columns info flag set'); +# test remove_columns +{ + is_deeply([$schema->source('CD')->columns], [qw/cdid artist title year/]); + $schema->source('CD')->remove_columns('year'); + is_deeply([$schema->source('CD')->columns], [qw/cdid artist title/]); +} }