X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fsqlmaker%2Fmsaccess.t;h=2805d0309ea03b48da918e74856535c10fd7b60a;hb=ac0c082542;hp=6d76f82fe8c8fe95c0a73c5d6c004a0e406ebe91;hpb=6b3e39473d9f38d9f5c97b6a162a95d99163c656;p=dbsrgits%2FDBIx-Class.git diff --git a/t/sqlmaker/msaccess.t b/t/sqlmaker/msaccess.t index 6d76f82..2805d03 100644 --- a/t/sqlmaker/msaccess.t +++ b/t/sqlmaker/msaccess.t @@ -5,9 +5,81 @@ use lib qw(t/lib); use DBICTest; use DBIC::SqlMakerTest; -use DBIx::Class::SQLMaker::ACCESS (); +# the entire point of the subclass is that parenthesis have to be +# just right for ACCESS to be happy +# globalize for entirety of the test +$SQL::Abstract::Test::parenthesis_significant = 1; -my $sa = DBIx::Class::SQLMaker::ACCESS->new; +my $schema = DBICTest->init_schema (storage_type => 'DBIx::Class::Storage::DBI::ACCESS', no_deploy => 1, quote_names => 1); + +is_same_sql_bind( + $schema->resultset('Artist')->search( + { + artistid => 1, + }, + { + join => [{ cds => 'tracks' }], + '+select' => [ 'tracks.title' ], + '+as' => [ 'track_title' ], + } + )->as_query, + '( + SELECT [me].[artistid], [me].[name], [me].[rank], [me].[charfield], + [tracks].[title] + FROM ( + ( + [artist] [me] + LEFT JOIN cd [cds] + ON [cds].[artist] = [me].[artistid] + ) + LEFT JOIN [track] [tracks] + ON [tracks].[cd] = [cds].[cdid] + ) + WHERE ( [artistid] = ? ) + )', + [ + [{ sqlt_datatype => 'integer', dbic_colname => 'artistid' } + => 1 ], + ], + 'correct SQL for two-step left join' +); + +is_same_sql_bind( + $schema->resultset('Track')->search( + { + trackid => 1, + }, + { + join => [{ cd => 'artist' }], + '+select' => [ 'artist.name' ], + '+as' => [ 'artist_name' ], + } + )->as_query, + '( + SELECT [me].[trackid], [me].[cd], [me].[position], [me].[title], [me].[last_updated_on], [me].[last_updated_at], + [artist].[name] + FROM ( + ( + [track] [me] + INNER JOIN cd [cd] + ON [cd].[cdid] = [me].[cd] + ) + INNER JOIN [artist] [artist] + ON [artist].[artistid] = [cd].[artist] + ) + WHERE ( [trackid] = ? ) + )', + [ + [{ sqlt_datatype => 'integer', dbic_colname => 'trackid' } + => 1 ], + ], + 'correct SQL for two-step inner join', +); + + +my $sa = $schema->storage->sql_maker; +# the legacy tests assume no quoting - leave things as-is +local $sa->{quote_char}; # my ($self, $table, $fields, $where, $order, @rest) = @_; my ($sql, @bind) = $sa->select(