X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=rt%2Ft%2Fapi%2Ftemplate.t;h=1baac44b608c192c2ee74258bd6183565a32d0dd;hb=917ff4fd80bac4f492d30ab251d626095f4dd939;hp=331d9f99618b516575e10866e23c8a3eda6f3b0d;hpb=0af38652da3b3be7da2d35b048285ef6f2194e1a;p=freeside.git diff --git a/rt/t/api/template.t b/rt/t/api/template.t index 331d9f996..1baac44b6 100644 --- a/rt/t/api/template.t +++ b/rt/t/api/template.t @@ -2,23 +2,31 @@ use warnings; use strict; -use RT; -use RT::Test tests => 10; +use RT::Test tests => 37; + +use_ok('RT::Template'); my $queue = RT::Test->load_or_create_queue( Name => 'Templates' ); ok $queue && $queue->id, "loaded or created a queue"; +my $alt_queue = RT::Test->load_or_create_queue( Name => 'Alternative' ); +ok $alt_queue && $alt_queue->id, 'loaded or created queue'; + { - my $template = RT::Template->new( RT->SystemUser ); + my $template = RT::Template->new(RT->SystemUser); isa_ok($template, 'RT::Template'); +} + +{ + my $template = RT::Template->new( RT->SystemUser ); my ($val,$msg) = $template->Create( Queue => $queue->id, - Name => 'InsertTest', + Name => 'Test', Content => 'This is template content' ); ok $val, "created a template" or diag "error: $msg"; ok my $id = $template->id, "id is defined"; - is $template->Name, 'InsertTest'; + is $template->Name, 'Test'; is $template->Content, 'This is template content', "We created the object right"; ($val, $msg) = $template->SetContent( 'This is new template content'); @@ -32,3 +40,164 @@ ok $queue && $queue->id, "loaded or created a queue"; $template->Load($id); ok !$template->id, "can not load template after deletion"; } + +note "can not create template w/o Name"; +{ + clean_templates( Queue => $queue->id ); + my $template = RT::Template->new( RT->SystemUser ); + my ($val,$msg) = $template->Create( Queue => $queue->id ); + ok(!$val,$msg); +} + +note "can not create template with duplicate name"; +{ + clean_templates( Queue => $queue->id ); + my $template = RT::Template->new( RT->SystemUser ); + my ($val,$msg) = $template->Create( Queue => $queue->id, Name => 'Test' ); + ok($val,$msg); + + ($val,$msg) = $template->Create( Queue => $queue->id, Name => 'Test' ); + ok(!$val,$msg); +} + +note "change template's name"; +{ + clean_templates( Queue => $queue->id ); + my $template = RT::Template->new( RT->SystemUser ); + my ($val,$msg) = $template->Create( Queue => $queue->id, Name => 'Test' ); + ok($val,$msg); + + ($val,$msg) = $template->SetName( 'Some' ); + ok($val,$msg); + is $template->Name, 'Some'; +} + +note "can not change name to empty"; +{ + clean_templates( Queue => $queue->id ); + my $template = RT::Template->new( RT->SystemUser ); + my ($val,$msg) = $template->Create( Queue => $queue->id, Name => 'Test' ); + ok($val,$msg); + + ($val,$msg) = $template->Create( Queue => $queue->id, Name => '' ); + ok(!$val,$msg); + ($val,$msg) = $template->Create( Queue => $queue->id, Name => undef ); + ok(!$val,$msg); +} + +note "can not change name to duplicate"; +{ + clean_templates( Queue => $queue->id ); + my $template = RT::Template->new( RT->SystemUser ); + my ($val,$msg) = $template->Create( Queue => $queue->id, Name => 'Test' ); + ok($val,$msg); + + ($val,$msg) = $template->Create( Queue => $queue->id, Name => 'Some' ); + ok($val,$msg); +} + +note "changing queue of template is not implemented"; +{ + clean_templates( Queue => $queue->id ); + my $template = RT::Template->new( RT->SystemUser ); + my ($val,$msg) = $template->Create( Queue => $queue->id, Name => 'Test' ); + ok($val,$msg); + + ($val,$msg) = $template->SetQueue( $alt_queue->id ); + ok(!$val,$msg); +} + +note "make sure template can not be deleted if it has scrips"; +{ + clean_templates( Queue => $queue->id ); + my $template = RT::Template->new( RT->SystemUser ); + my ($val,$msg) = $template->Create( Queue => $queue->id, Name => 'Test' ); + ok($val,$msg); + + my $scrip = RT::Scrip->new( RT->SystemUser ); + ($val,$msg) = $scrip->Create( + Queue => $queue->id, + ScripCondition => "On Create", + ScripAction => 'Autoreply To Requestors', + Template => $template->Name, + ); + ok($val, $msg); + + ($val, $msg) = $template->Delete; + ok(!$val,$msg); +} + +note "make sure template can be deleted if it's an override"; +{ + clean_templates( Queue => $queue->id ); + my $template = RT::Template->new( RT->SystemUser ); + my ($val,$msg) = $template->Create( Queue => $queue->id, Name => 'Overrided' ); + ok($val,$msg); + + $template = RT::Template->new( RT->SystemUser ); + ($val,$msg) = $template->Create( Queue => 0, Name => 'Overrided' ); + ok($val,$msg); + + my $scrip = RT::Scrip->new( RT->SystemUser ); + ($val,$msg) = $scrip->Create( + Queue => $queue->id, + ScripCondition => "On Create", + ScripAction => 'Autoreply To Requestors', + Template => $template->Name, + ); + ok($val, $msg); + + ($val, $msg) = $template->Delete; + ok($val,$msg); +} + +note "make sure template can be deleted if it has an override"; +{ + clean_templates( Queue => $queue->id ); + my $template = RT::Template->new( RT->SystemUser ); + my ($val,$msg) = $template->Create( Queue => 0, Name => 'Overrided' ); + ok($val,$msg); + + $template = RT::Template->new( RT->SystemUser ); + ($val,$msg) = $template->Create( Queue => $queue->id, Name => 'Overrided' ); + ok($val,$msg); + + my $scrip = RT::Scrip->new( RT->SystemUser ); + ($val,$msg) = $scrip->Create( + Queue => $queue->id, + ScripCondition => "On Create", + ScripAction => 'Autoreply To Requestors', + Template => $template->Name, + ); + ok($val, $msg); + + ($val, $msg) = $template->Delete; + ok($val,$msg); +} + + +{ + my $t = RT::Template->new(RT->SystemUser); + $t->Create(Name => "Foo", Queue => $queue->id); + my $t2 = RT::Template->new(RT->Nobody); + $t2->Load($t->Id); + ok($t2->QueueObj->id, "Got the template's queue objet"); +} + +sub clean_templates { + my %args = (@_); + + my $templates = RT::Templates->new( RT->SystemUser ); + $templates->Limit( FIELD => 'Queue', VALUE => $args{'Queue'} ) + if defined $args{'Queue'}; + $templates->Limit( FIELD => 'Name', VALUE => $_ ) + foreach ref $args{'Name'}? @{$args{'Name'}} : ($args{'Name'}||()); + while ( my $t = $templates->Next ) { + my ($status) = $t->Delete; + unless ( $status ) { + $_->Delete foreach @{ $t->UsedBy->ItemsArrayRef }; + $t->Delete; + } + } +} +