first pass RT4 merge, RT#13852
[freeside.git] / rt / t / web / rest-sort.t
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use RT::Test tests => 25;
5
6 my ($baseurl, $m) = RT::Test->started_ok;
7
8 RT::Test->create_tickets(
9     { },
10     { Subject => 'uno'  },
11     { Subject => 'dos'  },
12     { Subject => 'tres' },
13 );
14
15 ok($m->login, 'logged in');
16
17 sorted_tickets_ok('Subject',  ['2: dos', '3: tres', '1: uno']);
18 sorted_tickets_ok('+Subject', ['2: dos', '3: tres', '1: uno']);
19 sorted_tickets_ok('-Subject', ['1: uno', '3: tres', '2: dos']);
20
21 sorted_tickets_ok('id',  ['1: uno',  '2: dos', '3: tres']);
22 sorted_tickets_ok('+id', ['1: uno',  '2: dos', '3: tres']);
23 sorted_tickets_ok('-id', ['3: tres', '2: dos', '1: uno']);
24
25 undef $m;
26
27 sub sorted_tickets_ok {
28     local $Test::Builder::Level = $Test::Builder::Level + 1;
29     my $order    = shift;
30     my $expected = shift;
31
32     my $query = 'id > 0';
33
34     my $uri = URI->new("$baseurl/REST/1.0/search/ticket");
35     $uri->query_form(
36         query   => $query,
37         orderby => $order,
38     );
39     $m->get_ok($uri);
40
41     my @lines = split /\n/, $m->content;
42     shift @lines; # header
43     shift @lines; # empty line
44
45     is_deeply(\@lines, $expected, "sorted results by '$order'");
46 }