summaryrefslogtreecommitdiff
path: root/rt/t/articles/articles.t
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2012-04-24 11:35:56 -0700
committerIvan Kohler <ivan@freeside.biz>2012-04-24 11:35:56 -0700
commit6587f6ba7d047ddc1686c080090afe7d53365bd4 (patch)
treeec77342668e8865aca669c9b4736e84e3077b523 /rt/t/articles/articles.t
parent47153aae5c2fc00316654e7277fccd45f72ff611 (diff)
first pass RT4 merge, RT#13852
Diffstat (limited to 'rt/t/articles/articles.t')
-rw-r--r--rt/t/articles/articles.t137
1 files changed, 137 insertions, 0 deletions
diff --git a/rt/t/articles/articles.t b/rt/t/articles/articles.t
new file mode 100644
index 000000000..c6fe65106
--- /dev/null
+++ b/rt/t/articles/articles.t
@@ -0,0 +1,137 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use RT::Test tests => 29;
+
+use_ok 'RT::Articles';
+use_ok 'RT::Classes';
+use_ok 'RT::Class';
+
+my $class = RT::Class->new($RT::SystemUser);
+my ( $id, $msg ) = $class->Create( Name => 'CollectionTest-' . $$ );
+ok( $id, $msg );
+
+# Add a custom field to our class
+use_ok('RT::CustomField');
+my $cf = RT::CustomField->new($RT::SystemUser);
+isa_ok($cf, 'RT::CustomField');
+
+($id,$msg) = $cf->Create( Name => 'Articles::Sample-'.$$,
+ Description => 'Test text cf',
+ LookupType => RT::Article->CustomFieldLookupType,
+ Type => 'Freeform'
+ );
+
+
+
+ok($id,$msg);
+
+
+($id,$msg) = $cf->AddToObject($class);
+ok ($id,$msg);
+
+
+
+my $art = RT::Article->new($RT::SystemUser);
+( $id, $msg ) = $art->Create(
+ Class => $class->id,
+ Name => 'Collection-1-' . $$,
+ Summary => 'Coll-1-' . $$,
+ 'CustomField-'.$cf->Name => 'Test-'.$$
+);
+
+ok( $id, $msg );
+
+
+
+
+
+
+my $arts = RT::Articles->new($RT::SystemUser);
+$arts->LimitName( VALUE => 'Collection-1-' . $$ . 'fake' );
+is( $arts->Count, 0,
+ "Found no artlcles with names matching something that is not there" );
+
+my $arts2 = RT::Articles->new($RT::SystemUser);
+$arts2->LimitName( VALUE => 'Collection-1-' . $$ );
+is( $arts2->Count, 1, 'Found one with names matching the word "test"' );
+
+$arts = RT::Articles->new($RT::SystemUser);
+$arts->LimitSummary( VALUE => 'Coll-1-' . $$ . 'fake' );
+is( $arts->Count, 0,
+ 'Found no artlcles with summarys matching something that is not there' );
+
+$arts2 = RT::Articles->new($RT::SystemUser);
+$arts2->LimitSummary( VALUE => 'Coll-1-' . $$ );
+is( $arts2->Count, 1, 'Found one with summarys matching the word "Coll-1"' );
+
+my $new_art = RT::Article->new($RT::SystemUser);
+( $id, $msg ) = $new_art->Create(
+ Class => $class->id,
+ Name => 'CFSearchTest1' . $$,
+ 'CustomField-'.$cf->Name => 'testing' . $$
+);
+
+ok( $id, $msg . " Created a second testable article" );
+
+
+$arts = RT::Articles->new($RT::SystemUser);
+$arts->LimitCustomField( OPERATOR => 'LIKE', VALUE => "esting".$$ );
+is( $arts->Count, 1, "Found 1 cf values matching 'esting" . $$ . "' for an unspecified field");
+
+$arts = RT::Articles->new($RT::SystemUser);
+$arts->LimitCustomField( OPERATOR => '=', VALUE => "esting".$$ );
+is( $arts->Count, 0, "Found 0 cf values EXACTLY matching 'esting" . $$ . "' for an unspecified field");
+
+$arts = RT::Articles->new($RT::SystemUser);
+$arts->LimitCustomField( OPERATOR => '=', VALUE => "testing".$$ );
+is( $arts->Count, 1, "Found 0 cf values EXACTLY matching 'testing" . $$ . "' for an unspecified field");
+
+
+$arts = RT::Articles->new($RT::SystemUser);
+$arts->LimitCustomField( OPERATOR => 'LIKE', VALUE => $$ );
+is( $arts->Count, 2, "Found 1 cf values matching '" . $$ . "' for an unspecified field");
+
+
+# Test searching on named custom fields
+$arts = RT::Articles->new($RT::SystemUser);
+$arts->LimitCustomField( OPERATOR => 'LIKE', VALUE => $$, FIELD => $cf->Name );
+is( $arts->Count, 2, "Found 1 Article with cf values matching '".$$."' for CF named " .$cf->Name);
+
+$arts = RT::Articles->new($RT::SystemUser);
+$arts->LimitCustomField( OPERATOR => 'LIKE', VALUE => $$, FIELD => 'NO-SUCH-CF' );
+is( $arts->Count,0, "Found no cf values matching '".$$."' for CF 'NO-SUCH-CF' " );
+
+$arts = RT::Articles->new($RT::SystemUser);
+$arts->Limit(FIELD =>'Class', VALUE => $class->id);
+
+$arts->LimitCustomField(
+ OPERATOR => 'NOT LIKE',
+ VALUE => 'blah',
+ FIELD => $cf->id
+);
+is(
+ $arts->Count ,2,
+ "Found 1 articles with custom field values not matching blah");
+
+$arts = RT::Articles->new($RT::SystemUser);
+$arts->Limit(FIELD =>'Class', VALUE => $class->id);
+$arts->LimitCustomField( OPERATOR => 'NOT LIKE', VALUE => 'est', FIELD => $cf->id );
+is( $arts->Count , 0, "Found 0 cf values not matching 'est' for CF ".$cf->id. " " . join(',', map {$_->id} @{$arts->ItemsArrayRef}));
+$arts = RT::Articles->new($RT::SystemUser);
+$arts->Limit(FIELD =>'Class', VALUE => $class->id);
+$arts->LimitCustomField( OPERATOR => 'NOT LIKE', VALUE => 'BOGUS', FIELD => $cf->id );
+is( $arts->Count , 2, "Found 2 articles not matching 'BOGUS' for CF ".$cf->id);
+
+my $ac = RT::Articles->new($RT::SystemUser);
+ok( $ac->isa('RT::Articles') );
+ok( $ac->isa('DBIx::SearchBuilder') );
+ok( $ac->LimitRefersTo('http://dead.link') );
+is( $ac->Count, 0 );
+
+$ac = RT::Articles->new($RT::SystemUser);
+ok( $ac->LimitReferredToBy('http://dead.link') );
+is( $ac->Count, 0 );
+