Trailing WS crusade - got to save them bits
[dbsrgits/DBIx-Class.git] / t / resultset / is_ordered.t
CommitLineData
d1f542db 1use strict;
2use warnings;
3
4use lib qw(t/lib);
5use Test::More;
6use Test::Exception;
7use DBICTest;
8
9my $schema = DBICTest->init_schema();
10my $rs = $schema->resultset('Artist');
11
12ok !$rs->is_ordered, 'vanilla resultset is not ordered';
13
14# Simple ordering with a single column
15{
16 my $ordered = $rs->search(undef, { order_by => 'artistid' });
17 ok $ordered->is_ordered, 'Simple column ordering detected by is_ordered';
18}
19
20# Hashref order direction
21{
22 my $ordered = $rs->search(undef, { order_by => { -desc => 'artistid' } });
23 ok $ordered->is_ordered, 'resultset with order direction is_ordered';
24}
25
26# Column ordering with literal SQL
27{
28 my $ordered = $rs->search(undef, { order_by => \'artistid DESC' });
29 ok $ordered->is_ordered, 'resultset with literal SQL is_ordered';
30}
31
32# Multiple column ordering
33{
34 my $ordered = $rs->search(undef, { order_by => ['artistid', 'name'] });
35 ok $ordered->is_ordered, 'ordering with multiple columns as arrayref is ordered';
36}
37
38# More complicated ordering
39{
8273e845 40 my $ordered = $rs->search(undef, {
d1f542db 41 order_by => [
8273e845 42 { -asc => 'artistid' },
d1f542db 43 { -desc => 'name' },
8273e845 44 ]
d1f542db 45 });
46 ok $ordered->is_ordered, 'more complicated resultset ordering is_ordered';
47}
48
49# Empty multi-column ordering arrayref
50{
51 my $ordered = $rs->search(undef, { order_by => [] });
52 ok !$ordered->is_ordered, 'ordering with empty arrayref is not ordered';
53}
54
55# Multi-column ordering syntax with empty hashref
56{
57 my $ordered = $rs->search(undef, { order_by => [{}] });
58 ok !$ordered->is_ordered, 'ordering with [{}] is not ordered';
59}
60
61# Remove ordering after being set
62{
63 my $ordered = $rs->search(undef, { order_by => 'artistid' });
64 ok $ordered->is_ordered, 'resultset with ordering applied works..';
65 my $unordered = $ordered->search(undef, { order_by => undef });
66 ok !$unordered->is_ordered, '..and is not ordered with ordering removed';
67}
68
69# Search without ordering
70{
71 my $ordered = $rs->search({ name => 'We Are Goth' }, { join => 'cds' });
72 ok !$ordered->is_ordered, 'WHERE clause but no order_by is not ordered';
73}
74
75# Other functions without ordering
76{
77 # Join
78 my $joined = $rs->search(undef, { join => 'cds' });
79 ok !$joined->is_ordered, 'join but no order_by is not ordered';
80
81 # Group By
82 my $grouped = $rs->search(undef, { group_by => 'rank' });
83 ok !$grouped->is_ordered, 'group_by but no order_by is not ordered';
84
85 # Paging
86 my $paged = $rs->search(undef, { page=> 5 });
87 ok !$paged->is_ordered, 'paging but no order_by is not ordered';
88}
89
90done_testing;