
jbrandt at bestpractical
May 2, 2012, 7:36 AM
Post #1 of 1
(89 views)
Permalink
|
|
rt branch, 4.0/exclude-disabled-user-cfs, created. rt-4.0.5-135-g2de0928
|
|
The branch, 4.0/exclude-disabled-user-cfs has been created at 2de092853d1ee9d7f73ef640037dd8de5dff09b8 (commit) - Log ----------------------------------------------------------------- commit 2de092853d1ee9d7f73ef640037dd8de5dff09b8 Author: Jim Brandt <jbrandt [at] bestpractical> 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; +} ----------------------------------------------------------------------- _______________________________________________ Rt-commit mailing list Rt-commit [at] lists http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-commit
|