X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Flib%2Ft%2Fregression%2F23cfsort.t;fp=rt%2Flib%2Ft%2Fregression%2F23cfsort.t;h=0000000000000000000000000000000000000000;hb=5c96d46d56f2066bb40d9a34c4db56f53f43c6f2;hp=ba404f2ba33aedd46db10b7e392eb6c9c0736e74;hpb=63a268637b2d51a8766412617724b9436439deb6;p=freeside.git diff --git a/rt/lib/t/regression/23cfsort.t b/rt/lib/t/regression/23cfsort.t deleted file mode 100644 index ba404f2ba..000000000 --- a/rt/lib/t/regression/23cfsort.t +++ /dev/null @@ -1,177 +0,0 @@ -#!/usr/bin/perl - -use Test::More tests => 21; -use RT; -RT::LoadConfig(); -RT::Init(); - -use strict; -use warnings; - -use RT::Tickets; -use RT::Queue; -use RT::CustomField; - -my($ret,$msg); - - -# Test Sorting by custom fields. -# TODO: it's hard to read this file, conver to new style, -# for example look at 23cfsort-freeform-single.t - -# ---- Create a queue to test with. -my $queue = "CFSortQueue-$$"; -my $queue_obj = RT::Queue->new( $RT::SystemUser ); -($ret, $msg) = $queue_obj->Create( - Name => $queue, - Description => 'queue for custom field sort testing' -); -ok($ret, "$queue test queue creation. $msg"); - -# ---- Create some custom fields. We're not currently using all of -# them to test with, but the more the merrier. -my $cfO = RT::CustomField->new($RT::SystemUser); -my $cfA = RT::CustomField->new($RT::SystemUser); -my $cfB = RT::CustomField->new($RT::SystemUser); -my $cfC = RT::CustomField->new($RT::SystemUser); - -($ret, $msg) = $cfO->Create( Name => 'Order', - Queue => 0, - SortOrder => 1, - Description => q{Something to compare results for, since we can't guarantee ticket ID}, - Type=> 'FreeformSingle'); -ok($ret, "Custom Field Order created"); - -($ret, $msg) = $cfA->Create( Name => 'Alpha', - Queue => $queue_obj->id, - SortOrder => 1, - Description => 'A Testing custom field', - Type=> 'FreeformSingle'); -ok($ret, "Custom Field Alpha created"); - -($ret, $msg) = $cfB->Create( Name => 'Beta', - Queue => $queue_obj->id, - Description => 'A Testing custom field', - Type=> 'FreeformSingle'); -ok($ret, "Custom Field Beta created"); - -($ret, $msg) = $cfC->Create( Name => 'Charlie', - Queue => $queue_obj->id, - Description => 'A Testing custom field', - Type=> 'FreeformSingle'); -ok($ret, "Custom Field Charlie created"); - -# ----- Create some tickets to test with. Assign them some values to -# make it easy to sort with. -my $t1 = RT::Ticket->new($RT::SystemUser); -$t1->Create( Queue => $queue_obj->Id, - Subject => 'One', - ); -$t1->AddCustomFieldValue(Field => $cfO->Id, Value => '1'); -$t1->AddCustomFieldValue(Field => $cfA->Id, Value => '2'); -$t1->AddCustomFieldValue(Field => $cfB->Id, Value => '1'); -$t1->AddCustomFieldValue(Field => $cfC->Id, Value => 'BBB'); - -my $t2 = RT::Ticket->new($RT::SystemUser); -$t2->Create( Queue => $queue_obj->Id, - Subject => 'Two', - ); -$t2->AddCustomFieldValue(Field => $cfO->Id, Value => '2'); -$t2->AddCustomFieldValue(Field => $cfA->Id, Value => '1'); -$t2->AddCustomFieldValue(Field => $cfB->Id, Value => '2'); -$t2->AddCustomFieldValue(Field => $cfC->Id, Value => 'AAA'); - -# helper -sub check_order { - my ($tx, @order) = @_; - my @results; - while (my $t = $tx->Next) { - push @results, $t->CustomFieldValues($cfO->Id)->First->Content; - } - my $results = join (" ",@results); - my $order = join(" ",@order); - @_ = ($results, $order , "Ordered correctly: $order"); - goto \&is; -} - -# The real tests start here -my $tx = new RT::Tickets( $RT::SystemUser ); - - -# Make sure we can sort in both directions on a queue specific field. -$tx->FromSQL(qq[queue="$queue"] ); -$tx->OrderBy( FIELD => "CF.${queue}.{Charlie}", ORDER => 'DES' ); -is($tx->Count,2 ,"We found 2 tickets when lookign for cf charlie"); -check_order( $tx, 1, 2); - -$tx = new RT::Tickets( $RT::SystemUser ); -$tx->FromSQL(qq[queue="$queue"] ); -$tx->OrderBy( FIELD => "CF.${queue}.{Charlie}", ORDER => 'ASC' ); -is($tx->Count,2, "We found two tickets when sorting by cf charlie without limiting to it" ); -check_order( $tx, 2, 1); - -# When ordering by _global_ CustomFields, if more than one queue has a -# CF named Charlie, things will go bad. So, these results are uniqued -# in Tickets_Overlay. -$tx = new RT::Tickets( $RT::SystemUser ); -$tx->FromSQL(qq[queue="$queue"] ); -$tx->OrderBy( FIELD => "CF.{Charlie}", ORDER => 'DESC' ); -diag $tx->BuildSelectQuery; -is($tx->Count,2); -check_order( $tx, 1, 2); - -$tx = new RT::Tickets( $RT::SystemUser ); -$tx->FromSQL(qq[queue="$queue"] ); -$tx->OrderBy( FIELD => "CF.{Charlie}", ORDER => 'ASC' ); -diag $tx->BuildSelectQuery; -is($tx->Count,2); -check_order( $tx, 2, 1); - -# Add a new ticket, to test sorting on multiple columns. -my $t3 = RT::Ticket->new($RT::SystemUser); -$t3->Create( Queue => $queue_obj->Id, - Subject => 'Three', - ); -$t3->AddCustomFieldValue(Field => $cfO->Id, Value => '3'); -$t3->AddCustomFieldValue(Field => $cfA->Id, Value => '3'); -$t3->AddCustomFieldValue(Field => $cfB->Id, Value => '2'); -$t3->AddCustomFieldValue(Field => $cfC->Id, Value => 'AAA'); - -$tx = new RT::Tickets( $RT::SystemUser ); -$tx->FromSQL(qq[queue="$queue"] ); -$tx->OrderByCols( - { FIELD => "CF.${queue}.{Charlie}", ORDER => 'ASC' }, - { FIELD => "CF.${queue}.{Alpha}", ORDER => 'DES' }, -); -is($tx->Count,3); -check_order( $tx, 3, 2, 1); - -$tx = new RT::Tickets( $RT::SystemUser ); -$tx->FromSQL(qq[queue="$queue"] ); -$tx->OrderByCols( - { FIELD => "CF.${queue}.{Charlie}", ORDER => 'DES' }, - { FIELD => "CF.${queue}.{Alpha}", ORDER => 'ASC' }, -); -is($tx->Count,3); -check_order( $tx, 1, 2, 3); - -# Reverse the order of the secondary column, which changes the order -# of the first two tickets. -$tx = new RT::Tickets( $RT::SystemUser ); -$tx->FromSQL(qq[queue="$queue"] ); -$tx->OrderByCols( - { FIELD => "CF.${queue}.{Charlie}", ORDER => 'ASC' }, - { FIELD => "CF.${queue}.{Alpha}", ORDER => 'ASC' }, -); -is($tx->Count,3); -check_order( $tx, 2, 3, 1); - -$tx = new RT::Tickets( $RT::SystemUser ); -$tx->FromSQL(qq[queue="$queue"] ); -$tx->OrderByCols( - { FIELD => "CF.${queue}.{Charlie}", ORDER => 'DES' }, - { FIELD => "CF.${queue}.{Alpha}", ORDER => 'DES' }, -); -is($tx->Count,3); -check_order( $tx, 1, 3, 2); -