X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=dbsrgits%2FDBIx-Class.git;a=blobdiff_plain;f=t%2F76select.t;h=ca04b2678bc2bc333db035737b6dad662bd79d8b;hp=213ecbabd28e71268cb7bbf275ca87e47711c7ea;hb=0eb27426ceda801e6e872dc09eba34833fc0aaf0;hpb=c5bc9ba6e36d69c76fefc18a3653596a9ea13921 diff --git a/t/76select.t b/t/76select.t index 213ecba..ca04b26 100644 --- a/t/76select.t +++ b/t/76select.t @@ -8,7 +8,7 @@ use DBICTest; my $schema = DBICTest->init_schema(); -plan tests => 7; +plan tests => 11; my $rs = $schema->resultset('CD')->search({}, { @@ -42,3 +42,23 @@ $rs = $schema->resultset('CD')->search({}, lives_ok(sub { $rs->first->get_column('count') }, '+select/+as chained search 1st rscolumn present'); lives_ok(sub { $rs->first->get_column('addedtitle') }, '+select/+as chained search 1st rscolumn present'); lives_ok(sub { $rs->first->get_column('addedtitle2') }, '+select/+as chained search 3rd rscolumn present'); + + +# test the from search attribute (gets between the FROM and WHERE keywords, allows arbitrary subselects) +# also shows that outer select attributes are ok (i.e. order_by) +# +# from doesn't seem to be useful without using a scalarref - there were no initial tests >:( +# +$schema->storage->debug (1); +my $cds = $schema->resultset ('CD')->search ({}, { order_by => 'me.cdid'}); # make sure order is consistent +cmp_ok ($cds->count, '>', 2, 'Initially populated with more than 2 CDs'); + +my $table = $cds->result_source->name; +my $subsel = $cds->search ({}, { + columns => [qw/cdid title/], + from => \ "(SELECT cdid, title FROM $table LIMIT 2) me", +}); + +is ($subsel->count, 2, 'Subselect correctly limited the rs to 2 cds'); +is ($subsel->next->title, $cds->next->title, 'First CD title match'); +is ($subsel->next->title, $cds->next->title, 'Second CD title match');