1use strict; 2use warnings; 3 4BEGIN {require './t/lifecycles/utils.pl'}; 5 6my $general = RT::Test->load_or_create_queue( 7 Name => 'General', 8); 9ok $general && $general->id, 'loaded or created a queue'; 10 11my $delivery = RT::Test->load_or_create_queue( 12 Name => 'delivery', 13 Lifecycle => 'delivery', 14); 15ok $delivery && $delivery->id, 'loaded or created a queue'; 16 17my $tstatus = sub { 18 DBIx::SearchBuilder::Record::Cachable->FlushCache; 19 my $ticket = RT::Ticket->new( RT->SystemUser ); 20 $ticket->Load( $_[0] ); 21 return $ticket->Status; 22}; 23 24diag "check moving without a map"; 25{ 26 my $ticket = RT::Ticket->new( RT->SystemUser ); 27 my ($id, $msg) = $ticket->Create( 28 Queue => $general->id, 29 Subject => 'test', 30 Status => 'new', 31 ); 32 ok $id, 'created a ticket'; 33 (my $status, $msg) = $ticket->SetQueue( $delivery->id ); 34 ok !$status, "couldn't change queue when there is no maps between schemas"; 35 is $ticket->Queue, $general->id, 'queue is steal the same'; 36 is $ticket->Status, 'new', 'status is steal the same'; 37} 38 39diag "add partial map"; 40{ 41 my $schemas = RT->Config->Get('Lifecycles'); 42 $schemas->{'__maps__'} = { 43 'default -> delivery' => { 44 new => 'ordered', 45 }, 46 }; 47 RT::Lifecycle->FillCache; 48} 49 50diag "check moving with a partial map"; 51{ 52 { 53 my $ticket = RT::Ticket->new( RT->SystemUser ); 54 my ($id, $msg) = $ticket->Create( 55 Queue => $general->id, 56 Subject => 'test', 57 Status => 'new', 58 ); 59 ok $id, 'created a ticket'; 60 (my $status, $msg) = $ticket->SetQueue( $delivery->id ); 61 ok $status, "moved ticket between queues with different schemas"; 62 is $ticket->Queue, $delivery->id, 'queue has been changed' 63 or diag "error: $msg"; 64 is $ticket->Status, 'ordered', 'status has been changed'; 65 } 66 { 67 my $ticket = RT::Ticket->new( RT->SystemUser ); 68 my ($id, $msg) = $ticket->Create( 69 Queue => $general->id, 70 Subject => 'test', 71 Status => 'open', 72 ); 73 ok $id, 'created a ticket'; 74 (my $status, $msg) = $ticket->SetQueue( $delivery->id ); 75 ok !$status, "couldn't change queue when map is not complete"; 76 is $ticket->Queue, $general->id, 'queue is steal the same'; 77 is $ticket->Status, 'open', 'status is steal the same'; 78 } 79} 80 81diag "one way map doesn't work backwards"; 82{ 83 my $ticket = RT::Ticket->new( RT->SystemUser ); 84 my ($id, $msg) = $ticket->Create( 85 Queue => $delivery->id, 86 Subject => 'test', 87 Status => 'ordered', 88 ); 89 ok $id, 'created a ticket'; 90 (my $status, $msg) = $ticket->SetQueue( $general->id ); 91 ok !$status, "couldn't change queue when there is no maps between schemas"; 92 is $ticket->Queue, $delivery->id, 'queue is steal the same'; 93 is $ticket->Status, 'ordered', 'status is steal the same'; 94} 95 96done_testing; 97