diff options
Diffstat (limited to 'rt/t/charts/compound-sql-function.t')
-rw-r--r-- | rt/t/charts/compound-sql-function.t | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/rt/t/charts/compound-sql-function.t b/rt/t/charts/compound-sql-function.t new file mode 100644 index 0000000..3e6a3fd --- /dev/null +++ b/rt/t/charts/compound-sql-function.t @@ -0,0 +1,121 @@ + +use strict; +use warnings; + +use RT::Test tests => 14; +use RT::Ticket; + +my $q1 = RT::Test->load_or_create_queue( Name => 'One' ); +ok $q1 && $q1->id, 'loaded or created queue'; + +my $q2 = RT::Test->load_or_create_queue( Name => 'Two' ); +ok $q2 && $q2->id, 'loaded or created queue'; + +my @tickets = add_tix_from_data( + { Queue => $q1->id, Resolved => 3*60 }, + { Queue => $q1->id, Resolved => 3*60*60 }, + { Queue => $q1->id, Resolved => 3*24*60*60 }, + { Queue => $q1->id, Resolved => 3*30*24*60*60 }, + { Queue => $q1->id, Resolved => 9*30*24*60*60 }, + { Queue => $q2->id, Resolved => 7*60 }, + { Queue => $q2->id, Resolved => 7*60*60 }, + { Queue => $q2->id, Resolved => 7*24*60*60 }, + { Queue => $q2->id, Resolved => 7*30*24*60*60 }, + { Queue => $q2->id, Resolved => 24*30*24*60*60 }, +); + +use_ok 'RT::Report::Tickets'; + +{ + my $report = RT::Report::Tickets->new( RT->SystemUser ); + my %columns = $report->SetupGroupings( + Query => 'id > 0', + GroupBy => ['Queue'], + Function => ['ALL(Created-Resolved)'], + ); + $report->SortEntries; + + my @colors = RT->Config->Get("ChartColors"); + my $expected = { + 'thead' => [ + { + 'cells' => [ + { 'rowspan' => 2, 'value' => 'Queue', 'type' => 'head' }, + { 'colspan' => 4, 'value' => 'Summary of Created-Resolved', 'type' => 'head' } + ] + }, + { + 'cells' => [ + { 'value' => 'Minimum', 'type' => 'head', 'color' => $colors[0] }, + { 'value' => 'Average', 'type' => 'head', 'color' => $colors[1] }, + { 'value' => 'Maximum', 'type' => 'head', 'color' => $colors[2] }, + { 'value' => 'Total', 'type' => 'head', 'color' => $colors[3] } + ] + } + ], + 'tfoot' => [ + { + 'cells' => [ + { 'colspan' => 1, 'value' => 'Total', 'type' => 'label' }, + { 'value' => '10m', 'type' => 'value' }, + { 'value' => '8M 2W 3d', 'type' => 'value' }, + { 'value' => '2Y 8M 2W', 'type' => 'value' }, + { 'value' => '3Y 6M 3W', 'type' => 'value' } + ], + 'even' => 1 + } + ], + 'tbody' => [ + { + 'cells' => [ + { 'value' => 'One', 'type' => 'label' }, + { 'query' => '(Queue = 3)', 'value' => '3m', 'type' => 'value' }, + { 'query' => '(Queue = 3)', 'value' => '2M 1W 5d', 'type' => 'value' }, + { 'query' => '(Queue = 3)', 'value' => '8M 3W 6d', 'type' => 'value' }, + { 'query' => '(Queue = 3)', 'value' => '11M 4W 8h', 'type' => 'value' } + ], + 'even' => 1 + }, + { + 'cells' => [ + { 'value' => 'Two', 'type' => 'label' }, + { 'query' => '(Queue = 4)', 'value' => '7m', 'type' => 'value' }, + { 'query' => '(Queue = 4)', 'value' => '6M 4d 20h', 'type' => 'value' }, + { 'query' => '(Queue = 4)', 'value' => '1Y 11M 3W', 'type' => 'value' }, + { 'query' => '(Queue = 4)', 'value' => '2Y 6M 3W', 'type' => 'value' } + ], + 'even' => 0 + } + ] + }; + + my %table = $report->FormatTable( %columns ); + is_deeply( \%table, $expected, "basic table" ); +} + + +sub add_tix_from_data { + my @data = @_; + my @res = (); + + my $created = RT::Date->new( $RT::SystemUser ); + $created->SetToNow; + + my $resolved = RT::Date->new( $RT::SystemUser ); + + while (@data) { + $resolved->Set( Value => $created->Unix ); + $resolved->AddSeconds( $data[0]{'Resolved'} ); + my $t = RT::Ticket->new($RT::SystemUser); + my ( $id, undef $msg ) = $t->Create( + %{ shift(@data) }, + Created => $created->ISO, + Resolved => $resolved->ISO, + ); + ok( $id, "ticket created" ) or diag("error: $msg"); + push @res, $t; + } + return @res; +} + + |