6 BEGIN {require 't/lifecycles/utils.pl'};
8 my $general = RT::Test->load_or_create_queue(
11 ok $general && $general->id, 'loaded or created a queue';
13 my $delivery = RT::Test->load_or_create_queue(
15 Lifecycle => 'delivery',
17 ok $delivery && $delivery->id, 'loaded or created a queue';
20 DBIx::SearchBuilder::Record::Cachable->FlushCache;
21 my $ticket = RT::Ticket->new( RT->SystemUser );
22 $ticket->Load( $_[0] );
23 return $ticket->Status;
26 diag "check moving without a map";
28 my $ticket = RT::Ticket->new( RT->SystemUser );
29 my ($id, $msg) = $ticket->Create(
30 Queue => $general->id,
34 ok $id, 'created a ticket';
35 (my $status, $msg) = $ticket->SetQueue( $delivery->id );
36 ok !$status, "couldn't change queue when there is no maps between schemas";
37 is $ticket->Queue, $general->id, 'queue is steal the same';
38 is $ticket->Status, 'new', 'status is steal the same';
41 diag "add partial map";
43 my $schemas = RT->Config->Get('Lifecycles');
44 $schemas->{'__maps__'} = {
45 'default -> delivery' => {
49 RT::Lifecycle->FillCache;
52 diag "check moving with a partial map";
55 my $ticket = RT::Ticket->new( RT->SystemUser );
56 my ($id, $msg) = $ticket->Create(
57 Queue => $general->id,
61 ok $id, 'created a ticket';
62 (my $status, $msg) = $ticket->SetQueue( $delivery->id );
63 ok $status, "moved ticket between queues with different schemas";
64 is $ticket->Queue, $delivery->id, 'queue has been changed'
65 or diag "error: $msg";
66 is $ticket->Status, 'ordered', 'status has been changed';
69 my $ticket = RT::Ticket->new( RT->SystemUser );
70 my ($id, $msg) = $ticket->Create(
71 Queue => $general->id,
75 ok $id, 'created a ticket';
76 (my $status, $msg) = $ticket->SetQueue( $delivery->id );
77 ok !$status, "couldn't change queue when map is not complete";
78 is $ticket->Queue, $general->id, 'queue is steal the same';
79 is $ticket->Status, 'open', 'status is steal the same';
83 diag "one way map doesn't work backwards";
85 my $ticket = RT::Ticket->new( RT->SystemUser );
86 my ($id, $msg) = $ticket->Create(
87 Queue => $delivery->id,
91 ok $id, 'created a ticket';
92 (my $status, $msg) = $ticket->SetQueue( $general->id );
93 ok !$status, "couldn't change queue when there is no maps between schemas";
94 is $ticket->Queue, $delivery->id, 'queue is steal the same';
95 is $ticket->Status, 'ordered', 'status is steal the same';