[Rt-commit] rt branch, 4.2/update-subject-from-article, updated. rt-4.0.2-153-gccaefa0

Kevin Falcone falcone at bestpractical.com
Fri Sep 2 19:46:40 EDT 2011


The branch, 4.2/update-subject-from-article has been updated
       via  ccaefa06669823f16f68ae586b140e45f0b8a6f3 (commit)
       via  03de89def32b1b293481a64fa096a54abf71750b (commit)
      from  a0f8c62259e73e230cbc172a7d2102721d885cd4 (commit)

Summary of changes:
 lib/RT/Class.pm          |    2 +-
 t/articles/set-subject.t |  110 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 111 insertions(+), 1 deletions(-)
 create mode 100644 t/articles/set-subject.t

- Log -----------------------------------------------------------------
commit 03de89def32b1b293481a64fa096a54abf71750b
Author: Kevin Falcone <falcone at bestpractical.com>
Date:   Fri Sep 2 19:16:16 2011 -0400

    This should always be a Custom Field Id and thus a number

diff --git a/lib/RT/Class.pm b/lib/RT/Class.pm
index d08972a..02e2410 100644
--- a/lib/RT/Class.pm
+++ b/lib/RT/Class.pm
@@ -453,7 +453,7 @@ sub RemoveFromObject {
 sub SubjectOverride {
     my $self = shift;
     my $override = $self->FirstAttribute('SubjectOverride');
-    return $override ? $override->Content : '';
+    return $override ? $override->Content : 0;
 }
 
 sub SetSubjectOverride {

commit ccaefa06669823f16f68ae586b140e45f0b8a6f3
Author: Kevin Falcone <falcone at bestpractical.com>
Date:   Fri Sep 2 19:46:16 2011 -0400

    Tests for subject overriding

diff --git a/t/articles/set-subject.t b/t/articles/set-subject.t
new file mode 100644
index 0000000..5b054e8
--- /dev/null
+++ b/t/articles/set-subject.t
@@ -0,0 +1,110 @@
+use strict;
+use warnings;
+
+use RT::Test tests => undef;
+
+use RT::CustomField;
+use RT::EmailParser;
+use RT::Queue;
+use RT::Ticket;
+use_ok 'RT::Class';
+use_ok 'RT::Topic';
+use_ok 'RT::Article';
+
+# Variables to test return values
+my ($ret, $msg);
+
+# Create a test class
+my $class = RT::Class->new($RT::SystemUser);
+($ret, $msg) = $class->Create('Name' => 'TestClass-'.$$,
+			      'Description' => 'A general-purpose test class');
+ok($ret, "Test class created: $msg");
+# because id 0 represents global, it uses an empty Queue object...
+($ret, $msg) = $class->AddToObject(RT::Queue->new($RT::SystemUser));
+ok($ret, "Applied Class globally: $msg");
+
+# Create some article custom fields
+my $bodyCF    = RT::CustomField->new($RT::SystemUser);
+my $subjectCF = RT::CustomField->new($RT::SystemUser);
+($ret, $msg) = $subjectCF->Create('Name' => 'Subject-'.$$,
+			   'Type' => 'Text',
+			   'MaxValues' => 1,
+			   'LookupType' => 'RT::Class-RT::Article',
+			   'Description' => 'The subject to be answered',
+			   'Disabled' => 0);
+ok($ret, "Question CF created: $msg");
+($ret, $msg) = $bodyCF->Create('Name' => 'Body-'.$$,
+			 'Type' => 'Text',
+			 'MaxValues' => 1,
+			 'LookupType' => 'RT::Class-RT::Article',
+			 'Description' => 'The body to the subject',
+			 'Disabled' => 0);
+ok($ret, "Answer CF created: $msg");
+my ($sid, $bid) = ($subjectCF->Id, $bodyCF->Id);
+
+# Attach the custom fields to our class
+($ret, $msg) = $subjectCF->AddToObject($class);
+ok($ret, "Subject CF added to class: $msg");
+($ret, $msg) = $bodyCF->AddToObject($class);
+ok($ret, "Body CF added to class: $msg");
+
+my $article = RT::Article->new($RT::SystemUser);
+($ret, $msg) = $article->Create(Name => 'First article '.$$,
+				 Summary => 'blah blah 1',
+				 Class => $class->Id,
+				 "CustomField-$bid" => 'This goes in the body', 
+				 "CustomField-$sid" => 'This clobbers your subject',
+				 );
+ok($ret, "article 1 created: $msg");
+
+# Create a ticket.
+my $parser = RT::EmailParser->new();
+$parser->ParseMIMEEntityFromScalar('From: root at localhost
+To: rt at example.com
+Subject: test ticket for articles
+
+This is some form of new request.
+May as well say something about Africa.');
+
+my $ticket = RT::Ticket->new($RT::SystemUser);
+my $obj;
+($ret, $obj, $msg) = $ticket->Create(Queue => 'General',
+			       Subject => 'test ticket for articles '.$$,
+			       MIMEObj => $parser->Entity);
+ok($ret, "Test ticket for articles created: $msg");
+
+
+#### Right.  That's our data.  Now begin the real testing.
+
+my ($url, $m) = RT::Test->started_ok;
+ok($m->login, 'logged in');
+
+$m->get_ok( '/Ticket/Update.html?Action=Comment&id=' . $ticket->id,
+    'ticket update page' );
+is($m->form_number(3)->find_input('UpdateSubject')->value,$ticket->Subject,'Ticket Subject Found');
+$m->submit_form(
+    form_number => 3,
+    fields      => { 'Articles-Include-Article-Named' => $article->Id },
+    button      => 'Go',
+);
+is($m->form_number(3)->find_input('UpdateSubject')->value,$ticket->Subject,'Ticket Subject Not Clobbered');
+
+$m->get_ok("$url/Admin/Articles/Classes/");
+$m->follow_link_ok( { text => 'TestClass-'.$$ } );
+$m->submit_form_ok({
+    form_number => 3,
+    fields => { SubjectOverride => $sid },
+});
+$m->content_contains("Added Subject Override: Subject-$$");
+
+$m->get_ok( '/Ticket/Update.html?Action=Comment&id=' . $ticket->id,
+    'ticket update page' );
+is($m->form_number(3)->find_input('UpdateSubject')->value,$ticket->Subject,'Ticket Subject Found');
+$m->submit_form(
+    form_number => 3,
+    fields      => { 'Articles-Include-Article-Named' => $article->Name },
+    button      => 'Go',
+);
+is($m->form_number(3)->find_input('UpdateSubject')->value,$article->FirstCustomFieldValue("Subject-$$"),'Ticket Subject Clobbered');
+undef $m;
+done_testing;

-----------------------------------------------------------------------


More information about the Rt-commit mailing list