4 BEGIN {require 't/lifecycles/utils.pl'};
6 my $general = RT::Test->load_or_create_queue(
9 ok $general && $general->id, 'loaded or created a queue';
11 my $delivery = RT::Test->load_or_create_queue(
13 Lifecycle => 'delivery',
15 ok $delivery && $delivery->id, 'loaded or created a queue';
18 DBIx::SearchBuilder::Record::Cachable->FlushCache;
19 my $ticket = RT::Ticket->new( RT->SystemUser );
20 $ticket->Load( $_[0] );
21 return $ticket->Status;
24 diag "check moving without a map";
26 my $ticket = RT::Ticket->new( RT->SystemUser );
27 my ($id, $msg) = $ticket->Create(
28 Queue => $general->id,
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';
39 diag "add partial map";
41 my $schemas = RT->Config->Get('Lifecycles');
42 $schemas->{'__maps__'} = {
43 'default -> delivery' => {
47 RT::Lifecycle->FillCache;
50 diag "check moving with a partial map";
53 my $ticket = RT::Ticket->new( RT->SystemUser );
54 my ($id, $msg) = $ticket->Create(
55 Queue => $general->id,
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';
67 my $ticket = RT::Ticket->new( RT->SystemUser );
68 my ($id, $msg) = $ticket->Create(
69 Queue => $general->id,
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';
81 diag "one way map doesn't work backwards";
83 my $ticket = RT::Ticket->new( RT->SystemUser );
84 my ($id, $msg) = $ticket->Create(
85 Queue => $delivery->id,
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';