7 BEGIN {require 't/lifecycles/utils.pl'};
9 my $general = RT::Test->load_or_create_queue(
12 ok $general && $general->id, 'loaded or created a queue';
14 my $delivery = RT::Test->load_or_create_queue(
16 Lifecycle => 'delivery',
18 ok $delivery && $delivery->id, 'loaded or created a queue';
21 DBIx::SearchBuilder::Record::Cachable->FlushCache;
22 my $ticket = RT::Ticket->new( RT->SystemUser );
23 $ticket->Load( $_[0] );
24 return $ticket->Status;
27 diag "check moving without a map";
29 my $ticket = RT::Ticket->new( RT->SystemUser );
30 my ($id, $msg) = $ticket->Create(
31 Queue => $general->id,
35 ok $id, 'created a ticket';
36 (my $status, $msg) = $ticket->SetQueue( $delivery->id );
37 ok !$status, "couldn't change queue when there is no maps between schemas";
38 is $ticket->Queue, $general->id, 'queue is steal the same';
39 is $ticket->Status, 'new', 'status is steal the same';
42 diag "add partial map";
44 my $schemas = RT->Config->Get('Lifecycles');
45 $schemas->{'__maps__'} = {
46 'default -> delivery' => {
50 RT::Lifecycle->FillCache;
53 diag "check moving with a partial map";
56 my $ticket = RT::Ticket->new( RT->SystemUser );
57 my ($id, $msg) = $ticket->Create(
58 Queue => $general->id,
62 ok $id, 'created a ticket';
63 (my $status, $msg) = $ticket->SetQueue( $delivery->id );
64 ok $status, "moved ticket between queues with different schemas";
65 is $ticket->Queue, $delivery->id, 'queue has been changed'
66 or diag "error: $msg";
67 is $ticket->Status, 'ordered', 'status has been changed';
70 my $ticket = RT::Ticket->new( RT->SystemUser );
71 my ($id, $msg) = $ticket->Create(
72 Queue => $general->id,
76 ok $id, 'created a ticket';
77 (my $status, $msg) = $ticket->SetQueue( $delivery->id );
78 ok !$status, "couldn't change queue when map is not complete";
79 is $ticket->Queue, $general->id, 'queue is steal the same';
80 is $ticket->Status, 'open', 'status is steal the same';
84 diag "one way map doesn't work backwards";
86 my $ticket = RT::Ticket->new( RT->SystemUser );
87 my ($id, $msg) = $ticket->Create(
88 Queue => $delivery->id,
92 ok $id, 'created a ticket';
93 (my $status, $msg) = $ticket->SetQueue( $general->id );
94 ok !$status, "couldn't change queue when there is no maps between schemas";
95 is $ticket->Queue, $delivery->id, 'queue is steal the same';
96 is $ticket->Status, 'ordered', 'status is steal the same';