X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Ft%2Fticket%2Fmerge.t;h=99c723b8af2224d955e320f24f836a035337414c;hb=9270a9fe7ea00f5a24a9ce3b927f932db6650b23;hp=7c72fe08f074fa4b74dd43b5be9416ca559b91ac;hpb=e70abd21bab68b23488f7ef1ee2e693a3b365691;p=freeside.git diff --git a/rt/t/ticket/merge.t b/rt/t/ticket/merge.t index 7c72fe08f..99c723b8a 100644 --- a/rt/t/ticket/merge.t +++ b/rt/t/ticket/merge.t @@ -1,21 +1,20 @@ -#!/usr/bin/perl use strict; use warnings; use RT; -use RT::Test tests => '29'; +use RT::Test tests => '44'; # validate that when merging two tickets, the comments from both tickets # are integrated into the new ticket { - my $queue = RT::Queue->new($RT::SystemUser); + my $queue = RT::Queue->new(RT->SystemUser); my ($id,$msg) = $queue->Create(Name => 'MergeTest-'.rand(25)); ok ($id,$msg); - my $t1 = RT::Ticket->new($RT::SystemUser); + my $t1 = RT::Ticket->new(RT->SystemUser); my ($tid,$transid, $t1msg) =$t1->Create( Queue => $queue->Name, Subject => 'Merge test. orig', @@ -31,7 +30,7 @@ use RT::Test tests => '29'; } is($Comments,1, "our first ticket has only one Comment"); - my $t2 = RT::Ticket->new($RT::SystemUser); + my $t2 = RT::Ticket->new(RT->SystemUser); my ($t2id,$t2transid, $t2msg) =$t2->Create ( Queue => $queue->Name, Subject => 'Merge test. duplicate'); ok ($t2id, $t2msg); @@ -71,15 +70,15 @@ use RT::Test tests => '29'; # when you try to merge duplicate links on postgres, eveyrything goes to hell due to referential integrity constraints. { - my $t = RT::Ticket->new($RT::SystemUser); + my $t = RT::Ticket->new(RT->SystemUser); $t->Create(Subject => 'Main', Queue => 'general'); ok ($t->id); - my $t2 = RT::Ticket->new($RT::SystemUser); + my $t2 = RT::Ticket->new(RT->SystemUser); $t2->Create(Subject => 'Second', Queue => 'general'); ok ($t2->id); - my $t3 = RT::Ticket->new($RT::SystemUser); + my $t3 = RT::Ticket->new(RT->SystemUser); $t3->Create(Subject => 'Third', Queue => 'general'); ok ($t3->id); @@ -135,3 +134,46 @@ ok $user && $user->id, 'loaded or created user'; ($status,$msg) = $t->MergeInto($t2->id); ok($status, "Merged tickets: $msg"); } + +# check Time* fields after merge +{ + my @tickets; + my @values = ( + { Worked => 11, Estimated => 17, Left => 6 }, + { Worked => 7, Estimated => 12, Left => 5 }, + ); + + for my $i (0 .. 1) { + my $t = RT::Ticket->new(RT->SystemUser); + $t->Create( Queue => 'general'); + ok ($t->id); + push @tickets, $t; + + foreach my $field ( keys %{ $values[ $i ] } ) { + my $method = "SetTime$field"; + my ($status, $msg) = $t->$method( $values[ $i ]{ $field } ); + ok $status, "changed $field on the ticket" + or diag "error: $msg"; + } + } + + my ($status, $msg) = $tickets[1]->MergeInto($tickets[0]->id); + ok($status,$msg); + + my $t = RT::Ticket->new(RT->SystemUser); + $t->Load( $tickets[0]->id ); + foreach my $field ( keys %{ $values[0] } ) { + my $method = "Time$field"; + my $expected = 0; + $expected += $_->{ $field } foreach @values; + is $t->$method, $expected, "correct value"; + + my $from_history = 0; + my $txns = $t->Transactions; + while ( my $txn = $txns->Next ) { + next unless $txn->Type eq 'Set' && $txn->Field eq $method; + $from_history += $txn->NewValue - $txn->OldValue; + } + is $from_history, $expected, "history is correct"; + } +}