[Rt-commit] rt branch, 4.0/exclude-disabled-user-cfs, created. rt-4.0.5-135-g2de0928

Jim Brandt jbrandt at bestpractical.com
Wed May 2 10:36:39 EDT 2012


The branch, 4.0/exclude-disabled-user-cfs has been created
        at  2de092853d1ee9d7f73ef640037dd8de5dff09b8 (commit)

- Log -----------------------------------------------------------------
commit 2de092853d1ee9d7f73ef640037dd8de5dff09b8
Author: Jim Brandt <jbrandt at bestpractical.com>
Date:   Wed May 2 10:32:32 2012 -0400

    Exclude disabled CFs in Limit calls.
    
    Disabled User CFs were coming back in queries.
    
    See: http://issues.bestpractical.com/Ticket/Display.html?id=19762

diff --git a/lib/RT/SearchBuilder.pm b/lib/RT/SearchBuilder.pm
index aa2e25a..ae04e97 100644
--- a/lib/RT/SearchBuilder.pm
+++ b/lib/RT/SearchBuilder.pm
@@ -222,6 +222,12 @@ sub LimitCustomField {
 	OPERATOR   => $args{'OPERATOR'},
 	VALUE      => $args{'VALUE'},
     );
+    $self->Limit(
+	ALIAS => $alias,
+        FIELD => 'Disabled',
+        OPERATOR => '=',
+        VALUE => 0,
+    );
 }
 
 =head2 Limit PARAMHASH
diff --git a/t/api/cfsearch.t b/t/api/cfsearch.t
new file mode 100644
index 0000000..c8bd127
--- /dev/null
+++ b/t/api/cfsearch.t
@@ -0,0 +1,108 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+
+use RT::Test tests => 18;
+
+my $suffix = '-'. $$;
+
+use_ok 'RT::Users';
+use_ok 'RT::CustomField';
+
+my $u1 = RT::User->new( RT->SystemUser );
+isa_ok( $u1, 'RT::User' );
+ok( $u1->Load('root'), "Loaded user 'root'" );
+
+# create cf
+my $cfname = 'TestUserCF'. $suffix;
+my $cf = RT::CustomField->new( RT->SystemUser );
+isa_ok( $cf, 'RT::CustomField' );
+
+{
+    my ($id, $msg) = $cf->Create(
+       Name => $cfname,
+       LookupType => 'RT::User',
+       Type => 'Freeform',
+       Description => 'Freeform CF for tests',
+    );
+    ok( $id, "Created cf '$cfname' - " . $msg );
+}
+
+{
+  my ($status, $msg) = $cf->AddToObject( $u1 );
+  ok( $status, "Added CF to user object - " . $msg);
+}
+
+my $cfvalue1 = 'Foo';
+
+{
+  my ($id, $msg) = $u1->AddCustomFieldValue(
+			  Field => $cfname,
+			  Value => $cfvalue1,
+			  RecordTransaction => 0 );
+  ok( $id, "Adding CF value '$cfvalue1' - " . $msg );
+}
+
+# Confirm value is returned.
+{
+  my $cf_value_ref = QueryCFValue( $cfvalue1, $cf->id );
+  is( scalar(@$cf_value_ref), 1, 'Got one value.' );
+  is( $cf_value_ref->[0], 'Foo', 'Got Foo back for value.' );
+}
+
+{
+  my ($id, $msg) = $u1->DeleteCustomFieldValue(
+			    Field => $cfname,
+			    Value => $cfvalue1,
+			    RecordTransaction => 0 );
+  ok( $id, "Deleting CF value - " . $msg );
+}
+
+my $cfvalue2 = 'Bar';
+{
+  my ($id, $msg) = $u1->AddCustomFieldValue(
+			  Field => $cfname,
+			  Value => $cfvalue2,
+			  RecordTransaction => 0 );
+  ok( $id, "Adding second CF value '$cfvalue2' - " . $msg );
+}
+
+# Confirm no value is returned for Foo.
+{
+  # Calling with $cfvalue1 on purpose to confirm
+  # it has been disabled by the delete above.
+
+  my $cf_value_ref = QueryCFValue( $cfvalue1, $cf->id );
+  is( scalar(@$cf_value_ref), 0, 'No values returned for Foo.' );
+}
+
+# Confirm value is returned for Bar.
+{
+  my $cf_value_ref = QueryCFValue( $cfvalue2, $cf->id );
+  is( scalar(@$cf_value_ref), 1, 'Got one value.' );
+  is( $cf_value_ref->[0], 'Bar', 'Got Bar back for value.' );
+}
+
+
+sub QueryCFValue{
+  my $cf_value = shift;
+  my $cf_id = shift;
+  my @cf_value_strs;
+
+  my $users = RT::Users->new(RT->SystemUser);
+  isa_ok( $users, 'RT::Users' );
+
+  $users->LimitCustomField(
+	  CUSTOMFIELD => $cf_id,
+	  OPERATOR => "=",
+	  VALUE => $cf_value );
+
+  while ( my $filtered_user = $users->Next() ){
+    my $cf_values = $filtered_user->CustomFieldValues($cf->id);
+    while (my $cf_value = $cf_values->Next() ){
+      push @cf_value_strs, $cf_value->Content;
+    }
+  }
+  return \@cf_value_strs;
+}

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


More information about the Rt-commit mailing list