X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F88result_set_column.t;fp=t%2F88result_set_column.t;h=ff8db9e8bc717757bdc06bdb6edb3ef518a80266;hb=3214abc7114c66f6c342ef3c8180ae0fc5d68a8d;hp=69eb911dfaa13412f47a78fc5221cb5cd73f507a;hpb=1e4f9fb3b8bd1f54518bc2942554099356fa6524;p=dbsrgits%2FDBIx-Class.git diff --git a/t/88result_set_column.t b/t/88result_set_column.t index 69eb911..ff8db9e 100644 --- a/t/88result_set_column.t +++ b/t/88result_set_column.t @@ -167,4 +167,29 @@ is_same_sql_bind ( 'Correct SQL for prefetch/order_by/group_by' ); +# test aggregate on a function +{ + my $tr_rs = $schema->resultset("Track"); + $tr_rs->create({ cd => 2, title => 'dealbreaker' }); + + is( + $tr_rs->get_column('cd')->max, + 5, + "Correct: Max cd in Track is 5" + ); + + my $track_counts_per_cd_via_group_by = $tr_rs->search({}, { + columns => [ 'cd', { cnt => { count => 'trackid', -as => 'cnt' } } ], + group_by => 'cd', + })->get_column('cnt'); + + is ($track_counts_per_cd_via_group_by->max, 4, 'Correct max tracks per cd'); + is ($track_counts_per_cd_via_group_by->min, 3, 'Correct min tracks per cd'); + is ( + sprintf('%0.1f', $track_counts_per_cd_via_group_by->func('avg') ), + '3.2', + 'Correct avg tracks per cd' + ); +} + done_testing;