-#!/usr/bin/perl
-use RT::Test tests => 57;
+use RT::Test nodata => 1, tests => 89;
use strict;
use warnings;
# Test Sorting by FreeformSingle custom field.
-diag "Create a queue to test with." if $ENV{TEST_VERBOSE};
+diag "Create a queue to test with.";
my $queue_name = "CFSortQueue-$$";
my $queue;
{
- $queue = RT::Queue->new( $RT::SystemUser );
+ $queue = RT::Queue->new( RT->SystemUser );
my ($ret, $msg) = $queue->Create(
Name => $queue_name,
Description => 'queue for custom field sort testing'
my %CF;
my $cf_name;
-diag "create a CF\n" if $ENV{TEST_VERBOSE};
+diag "create a CF";
{
$cf_name = $CF{'CF'}{'name'} = "Order$$";
- $CF{'CF'}{'obj'} = RT::CustomField->new( $RT::SystemUser );
+ $CF{'CF'}{'obj'} = RT::CustomField->new( RT->SystemUser );
my ($ret, $msg) = $CF{'CF'}{'obj'}->Create(
Name => $CF{'CF'}{'name'},
Queue => $queue->id,
my ($total, @data, @tickets, @test) = (0, ());
-sub add_tix_from_data {
- my @res = ();
- @data = sort { rand(100) <=> rand(100) } @data;
- while (@data) {
- my $t = RT::Ticket->new($RT::SystemUser);
- my %args = %{ shift(@data) };
-
- my $subject = '-';
- foreach my $e ( grep exists $CF{$_} && defined $CF{$_}, keys %args ) {
- my @values = ();
- if ( ref $args{ $e } ) {
- @values = @{ delete $args{ $e } };
- } else {
- @values = (delete $args{ $e });
- }
- $args{ 'CustomField-'. $CF{ $e }{'obj'}->id } = \@values
- if @values;
- $subject = join(",", sort @values) || '-'
- if $e eq 'CF';
- }
-
- my ( $id, undef $msg ) = $t->Create(
- %args,
- Queue => $queue->id,
- Subject => $subject,
- );
- ok( $id, "ticket created" ) or diag("error: $msg");
- push @res, $t;
- $total++;
- }
- return @res;
-}
-
sub run_tests {
my $query_prefix = join ' OR ', map 'id = '. $_->id, @tickets;
foreach my $test ( @test ) {
foreach my $order (qw(ASC DESC)) {
my $error = 0;
- my $tix = RT::Tickets->new( $RT::SystemUser );
+ my $tix = RT::Tickets->new( RT->SystemUser );
$tix->FromSQL( $query );
$tix->OrderBy( FIELD => $test->{'Order'}, ORDER => $order );
}
@data = (
- { },
- { CF => 'a' },
- { CF => 'b' },
+ { Subject => '-' },
+ { Subject => 'a', 'CustomField-' . $CF{CF}{obj}->id => 'a' },
+ { Subject => 'b', 'CustomField-' . $CF{CF}{obj}->id => 'b' },
);
-@tickets = add_tix_from_data();
+
+@tickets = RT::Test->create_tickets( { Queue => $queue->id, RandomOrder => 1 }, @data);
@test = (
{ Order => "CF.{$cf_name}" },
{ Order => "CF.$queue_name.{$cf_name}" },
run_tests();
@data = (
- { },
- { CF => 'aa' },
- { CF => 'ab' },
+ { Subject => '-' },
+ { Subject => 'aa', 'CustomField-' . $CF{CF}{obj}->id => 'aa' },
+ { Subject => 'bb', 'CustomField-' . $CF{CF}{obj}->id => 'bb' },
);
-@tickets = add_tix_from_data();
+@tickets = RT::Test->create_tickets( { Queue => $queue->id, RandomOrder => 1 }, @data);
@test = (
{ Query => "CF.{$cf_name} LIKE 'a'", Order => "CF.{$cf_name}" },
{ Query => "CF.{$cf_name} LIKE 'a'", Order => "CF.$queue_name.{$cf_name}" },
{ Subject => 'b', CF => 'b' },
{ Subject => 'c', CF => 'c' },
);
-@tickets = add_tix_from_data();
+@tickets = RT::Test->create_tickets( { Queue => $queue->id, RandomOrder => 1 }, @data);
@test = (
{ Query => "CF.{$cf_name} != 'c'", Order => "CF.{$cf_name}" },
{ Query => "CF.{$cf_name} != 'c'", Order => "CF.$queue_name.{$cf_name}" },
-diag "create another CF\n" if $ENV{TEST_VERBOSE};
+diag "create another CF";
{
$CF{'AnotherCF'}{'name'} = "OrderAnother$$";
- $CF{'AnotherCF'}{'obj'} = RT::CustomField->new( $RT::SystemUser );
+ $CF{'AnotherCF'}{'obj'} = RT::CustomField->new( RT->SystemUser );
my ($ret, $msg) = $CF{'AnotherCF'}{'obj'}->Create(
Name => $CF{'AnotherCF'}{'name'},
Queue => $queue->id,
{ Subject => 'b', CF => 'b', AnotherCF => 'ya' },
{ Subject => 'c', CF => 'c', AnotherCF => 'xa' },
);
-@tickets = add_tix_from_data();
+@tickets = RT::Test->create_tickets( { Queue => $queue->id, RandomOrder => 1 }, @data);
@test = (
{ Order => "CF.{$cf_name}" },
{ Order => "CF.$queue_name.{$cf_name}" },
);
run_tests();
-
+@tickets = ();