+use strict;
+
+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);
+ isa_ok($template, 'RT::Template');
+}
+
+{
+ my $template = RT::Template->new( RT->SystemUser );
+ my ($val,$msg) = $template->Create(
+ Queue => $queue->id,
+ 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, 'Test';
+ is $template->Content, 'This is template content', "We created the object right";
+
+ ($val, $msg) = $template->SetContent( 'This is new template content');
+ ok $val, "changed content" or diag "error: $msg";
+
+ is $template->Content, 'This is new template content', "We managed to _Set_ the content";
+
+ ($val, $msg) = $template->Delete;
+ ok $val, "deleted template";
+
+ $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);