5 use RT::Test tests => 37;
7 use_ok('RT::Template');
9 my $queue = RT::Test->load_or_create_queue( Name => 'Templates' );
10 ok $queue && $queue->id, "loaded or created a queue";
12 my $alt_queue = RT::Test->load_or_create_queue( Name => 'Alternative' );
13 ok $alt_queue && $alt_queue->id, 'loaded or created queue';
16 my $template = RT::Template->new(RT->SystemUser);
17 isa_ok($template, 'RT::Template');
21 my $template = RT::Template->new( RT->SystemUser );
22 my ($val,$msg) = $template->Create(
25 Content => 'This is template content'
27 ok $val, "created a template" or diag "error: $msg";
28 ok my $id = $template->id, "id is defined";
29 is $template->Name, 'Test';
30 is $template->Content, 'This is template content', "We created the object right";
32 ($val, $msg) = $template->SetContent( 'This is new template content');
33 ok $val, "changed content" or diag "error: $msg";
35 is $template->Content, 'This is new template content', "We managed to _Set_ the content";
37 ($val, $msg) = $template->Delete;
38 ok $val, "deleted template";
41 ok !$template->id, "can not load template after deletion";
44 note "can not create template w/o Name";
46 clean_templates( Queue => $queue->id );
47 my $template = RT::Template->new( RT->SystemUser );
48 my ($val,$msg) = $template->Create( Queue => $queue->id );
52 note "can not create template with duplicate name";
54 clean_templates( Queue => $queue->id );
55 my $template = RT::Template->new( RT->SystemUser );
56 my ($val,$msg) = $template->Create( Queue => $queue->id, Name => 'Test' );
59 ($val,$msg) = $template->Create( Queue => $queue->id, Name => 'Test' );
63 note "change template's name";
65 clean_templates( Queue => $queue->id );
66 my $template = RT::Template->new( RT->SystemUser );
67 my ($val,$msg) = $template->Create( Queue => $queue->id, Name => 'Test' );
70 ($val,$msg) = $template->SetName( 'Some' );
72 is $template->Name, 'Some';
75 note "can not change name to empty";
77 clean_templates( Queue => $queue->id );
78 my $template = RT::Template->new( RT->SystemUser );
79 my ($val,$msg) = $template->Create( Queue => $queue->id, Name => 'Test' );
82 ($val,$msg) = $template->Create( Queue => $queue->id, Name => '' );
84 ($val,$msg) = $template->Create( Queue => $queue->id, Name => undef );
88 note "can not change name to duplicate";
90 clean_templates( Queue => $queue->id );
91 my $template = RT::Template->new( RT->SystemUser );
92 my ($val,$msg) = $template->Create( Queue => $queue->id, Name => 'Test' );
95 ($val,$msg) = $template->Create( Queue => $queue->id, Name => 'Some' );
99 note "changing queue of template is not implemented";
101 clean_templates( Queue => $queue->id );
102 my $template = RT::Template->new( RT->SystemUser );
103 my ($val,$msg) = $template->Create( Queue => $queue->id, Name => 'Test' );
106 ($val,$msg) = $template->SetQueue( $alt_queue->id );
110 note "make sure template can not be deleted if it has scrips";
112 clean_templates( Queue => $queue->id );
113 my $template = RT::Template->new( RT->SystemUser );
114 my ($val,$msg) = $template->Create( Queue => $queue->id, Name => 'Test' );
117 my $scrip = RT::Scrip->new( RT->SystemUser );
118 ($val,$msg) = $scrip->Create(
120 ScripCondition => "On Create",
121 ScripAction => 'Autoreply To Requestors',
122 Template => $template->Name,
126 ($val, $msg) = $template->Delete;
130 note "make sure template can be deleted if it's an override";
132 clean_templates( Queue => $queue->id );
133 my $template = RT::Template->new( RT->SystemUser );
134 my ($val,$msg) = $template->Create( Queue => $queue->id, Name => 'Overrided' );
137 $template = RT::Template->new( RT->SystemUser );
138 ($val,$msg) = $template->Create( Queue => 0, Name => 'Overrided' );
141 my $scrip = RT::Scrip->new( RT->SystemUser );
142 ($val,$msg) = $scrip->Create(
144 ScripCondition => "On Create",
145 ScripAction => 'Autoreply To Requestors',
146 Template => $template->Name,
150 ($val, $msg) = $template->Delete;
154 note "make sure template can be deleted if it has an override";
156 clean_templates( Queue => $queue->id );
157 my $template = RT::Template->new( RT->SystemUser );
158 my ($val,$msg) = $template->Create( Queue => 0, Name => 'Overrided' );
161 $template = RT::Template->new( RT->SystemUser );
162 ($val,$msg) = $template->Create( Queue => $queue->id, Name => 'Overrided' );
165 my $scrip = RT::Scrip->new( RT->SystemUser );
166 ($val,$msg) = $scrip->Create(
168 ScripCondition => "On Create",
169 ScripAction => 'Autoreply To Requestors',
170 Template => $template->Name,
174 ($val, $msg) = $template->Delete;
180 my $t = RT::Template->new(RT->SystemUser);
181 $t->Create(Name => "Foo", Queue => $queue->id);
182 my $t2 = RT::Template->new(RT->Nobody);
184 ok($t2->QueueObj->id, "Got the template's queue objet");
187 sub clean_templates {
190 my $templates = RT::Templates->new( RT->SystemUser );
191 $templates->Limit( FIELD => 'Queue', VALUE => $args{'Queue'} )
192 if defined $args{'Queue'};
193 $templates->Limit( FIELD => 'Name', VALUE => $_ )
194 foreach ref $args{'Name'}? @{$args{'Name'}} : ($args{'Name'}||());
195 while ( my $t = $templates->Next ) {
196 my ($status) = $t->Delete;
198 $_->Delete foreach @{ $t->UsedBy->ItemsArrayRef };