diff options
author | Ivan Kohler <ivan@freeside.biz> | 2014-09-15 20:44:48 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2014-09-15 20:44:48 -0700 |
commit | ed1f84b4e8f626245995ecda5afcf83092c153b2 (patch) | |
tree | 3f58bbef5fbf2502e65d29b37b5dbe537519e89d /rt/t/customfields | |
parent | fe9ea9183e8a16616d6d04a7b5c7498d28e78248 (diff) |
RT 4.0.22
Diffstat (limited to 'rt/t/customfields')
-rw-r--r-- | rt/t/customfields/date.t | 86 | ||||
-rw-r--r-- | rt/t/customfields/datetime.t | 76 | ||||
-rw-r--r-- | rt/t/customfields/iprangev6.t | 2 | ||||
-rw-r--r-- | rt/t/customfields/repeated_values.t | 134 |
4 files changed, 297 insertions, 1 deletions
diff --git a/rt/t/customfields/date.t b/rt/t/customfields/date.t new file mode 100644 index 000000000..475ace664 --- /dev/null +++ b/rt/t/customfields/date.t @@ -0,0 +1,86 @@ +use Test::MockTime qw(set_fixed_time restore_time); + +use warnings; +use strict; + +use RT::Test tests => undef; + +RT::Test->set_rights( + { Principal => 'Everyone', Right => [qw( + SeeQueue ShowTicket CreateTicket SeeCustomField ModifyCustomField + )] }, +); + +my $q = RT::Test->load_or_create_queue( Name => 'General' ); +ok $q && $q->id, 'loaded or created a queue'; + +my $user_m = RT::Test->load_or_create_user( Name => 'moscow', Timezone => 'Europe/Moscow' ); +ok $user_m && $user_m->id; + +my $user_b = RT::Test->load_or_create_user( Name => 'boston', Timezone => 'America/New_York' ); +ok $user_b && $user_b->id; + + +my $cf_name = 'A Date'; +my $cf; +{ + $cf = RT::CustomField->new(RT->SystemUser); + ok( + $cf->Create( + Name => $cf_name, + Type => 'Date', + MaxValues => 1, + LookupType => RT::Ticket->CustomFieldLookupType, + ), + 'create cf date' + ); + ok( $cf->AddToObject($q), 'date cf apply to queue' ); +} + +{ + my $ticket = RT::Ticket->new( RT::CurrentUser->new( $user_m ) ); + my ($id) = $ticket->Create( + Queue => $q->id, + Subject => 'Test', + 'CustomField-'. $cf->id => '2013-02-11', + ); + my $cf_value = $ticket->CustomFieldValues($cf_name)->First; + is( $cf_value->Content, '2013-02-11', 'correct value' ); + + $ticket = RT::Ticket->new( RT::CurrentUser->new( $user_b ) ); + $ticket->Load($id); + is( $ticket->FirstCustomFieldValue($cf_name), '2013-02-11', 'correct value' ); +} + +{ + my $ticket = RT::Ticket->new(RT->SystemUser); + ok( + $ticket->Create( + Queue => $q->id, + Subject => 'Test', + 'CustomField-' . $cf->id => '2010-05-04 11:34:56', + ), + 'create ticket with cf set to 2010-05-04 11:34:56' + ); + is( $ticket->CustomFieldValues->First->Content, + '2010-05-04', 'date in db only has date' ); +} + +# in moscow it's already Feb 11, so tomorrow is Feb 12 +set_fixed_time("2013-02-10T23:10:00Z"); +{ + my $ticket = RT::Ticket->new( RT::CurrentUser->new( $user_m ) ); + my ($id) = $ticket->Create( + Queue => $q->id, + Subject => 'Test', + 'CustomField-'. $cf->id => 'tomorrow', + ); + my $cf_value = $ticket->CustomFieldValues($cf_name)->First; + is( $cf_value->Content, '2013-02-12', 'correct value' ); + + $ticket = RT::Ticket->new( RT::CurrentUser->new( $user_b ) ); + $ticket->Load($id); + is( $ticket->FirstCustomFieldValue($cf_name), '2013-02-12', 'correct value' ); +} + +done_testing(); diff --git a/rt/t/customfields/datetime.t b/rt/t/customfields/datetime.t new file mode 100644 index 000000000..5e4497d0c --- /dev/null +++ b/rt/t/customfields/datetime.t @@ -0,0 +1,76 @@ +use Test::MockTime qw(set_fixed_time restore_time); + +use warnings; +use strict; + +use RT::Test tests => undef; + +RT::Test->set_rights( + { Principal => 'Everyone', Right => [qw( + SeeQueue ShowTicket CreateTicket SeeCustomField ModifyCustomField + )] }, +); + +my $q = RT::Test->load_or_create_queue( Name => 'General' ); +ok $q && $q->id, 'loaded or created a queue'; + +my $user_m = RT::Test->load_or_create_user( Name => 'moscow', Timezone => 'Europe/Moscow' ); +ok $user_m && $user_m->id; + +my $user_b = RT::Test->load_or_create_user( Name => 'boston', Timezone => 'America/New_York' ); +ok $user_b && $user_b->id; + + +my $cf_name = 'A Date and Time'; +my $cf; +{ + $cf = RT::CustomField->new(RT->SystemUser); + ok( + $cf->Create( + Name => $cf_name, + Type => 'DateTime', + MaxValues => 1, + LookupType => RT::Ticket->CustomFieldLookupType, + ), + 'create cf date' + ); + ok( $cf->AddToObject($q), 'date cf apply to queue' ); +} + +{ + my $ticket = RT::Ticket->new( RT::CurrentUser->new( $user_m ) ); + my ($id) = $ticket->Create( + Queue => $q->id, + Subject => 'Test', + 'CustomField-'. $cf->id => '2013-02-11 00:00:00', + ); + my $cf_value = $ticket->CustomFieldValues($cf_name)->First; + TODO: { + local $TODO = 'questionable result, should we change?'; + # $Ticket->Created returns UTC, not user's date, but + # ticket has ->CreatedObj method to get all required + # transformation + # No more TODO. + is( $cf_value->Content, '2013-02-11 00:00:00', 'correct value' ); + } + is( $cf_value->Content, '2013-02-10 20:00:00', 'correct value' ); + + $ticket = RT::Ticket->new( RT::CurrentUser->new( $user_b ) ); + $ticket->Load($id); + is( $ticket->FirstCustomFieldValue($cf_name), '2013-02-10 20:00:00', 'correct value' ); +} + +# in moscow it's already Feb 11, so tomorrow is Feb 12 +set_fixed_time("2013-02-10T23:10:00Z"); +{ + my $ticket = RT::Ticket->new( RT::CurrentUser->new( $user_m ) ); + my ($id) = $ticket->Create( + Queue => $q->id, + Subject => 'Test', + 'CustomField-'. $cf->id => 'tomorrow', + ); + my $cf_value = $ticket->CustomFieldValues($cf_name)->First; + is( $cf_value->Content, '2013-02-11 23:10:00', 'correct value' ); +} + +done_testing(); diff --git a/rt/t/customfields/iprangev6.t b/rt/t/customfields/iprangev6.t index 3b8a4d60a..84fec16a0 100644 --- a/rt/t/customfields/iprangev6.t +++ b/rt/t/customfields/iprangev6.t @@ -193,7 +193,7 @@ diag "check that we parse correct IPs only" if $ENV{'TEST_VERBOSE'}; } ); - $agent->content_like( qr/can not be parsed as an IP address range/, + $agent->content_like( qr/is not a valid IP address range/, 'ticket fails to create' ); } diff --git a/rt/t/customfields/repeated_values.t b/rt/t/customfields/repeated_values.t new file mode 100644 index 000000000..584512c7d --- /dev/null +++ b/rt/t/customfields/repeated_values.t @@ -0,0 +1,134 @@ +use warnings; +use strict; + +use RT::Test tests => undef; + + +my $ticket = RT::Test->create_ticket( Subject => 'test repeated values', Queue => 'General' ); +my ( $ret, $msg ); + +{ + diag "testing freeform single cf"; + my $freeform_single = RT::Test->load_or_create_custom_field( + Name => 'freeform single', + Type => 'FreeformSingle', + Queue => 0, + ); + + ( $ret, $msg ) = + $ticket->AddCustomFieldValue( Field => $freeform_single, Value => 'foo' ); + ok( $ret, $msg ); + is( $ticket->FirstCustomFieldValue($freeform_single), 'foo', 'value is foo' ); + + my $ocfv = $ticket->CustomFieldValues($freeform_single)->First; + ( $ret, $msg ) = + $ticket->AddCustomFieldValue( Field => $freeform_single, Value => 'foo' ); + is( $ret, $ocfv->id, "got the same previous object" ); + is( $ticket->FirstCustomFieldValue($freeform_single), 'foo', 'value is still foo' ); + + ( $ret, $msg ) = + $ticket->AddCustomFieldValue( Field => $freeform_single, Value => 'FOO' ); + ok( $ret, $msg ); + isnt( $ret, $ocfv->id, "got a new value" ); + is( $ticket->FirstCustomFieldValue($freeform_single), 'FOO', 'value is FOO' ); +} + +{ + diag "testing freeform multiple cf"; + my $freeform_multiple = RT::Test->load_or_create_custom_field( + Name => 'freeform multiple', + Type => 'FreeformMultiple', + Queue => 0, + ); + + ($ret, $msg) = $ticket->AddCustomFieldValue( Field => $freeform_multiple, Value => 'foo' ); + ok($ret, $msg); + is( $ticket->FirstCustomFieldValue($freeform_multiple), 'foo', 'value is foo' ); + + my $ocfv = $ticket->CustomFieldValues($freeform_multiple)->First; + ($ret, $msg) = $ticket->AddCustomFieldValue( Field => $freeform_multiple, Value => 'foo' ); + is($ret, $ocfv->id, "got the same previous object"); + is( $ticket->FirstCustomFieldValue($freeform_multiple), 'foo', 'value is still foo' ); + + ($ret, $msg) = $ticket->AddCustomFieldValue( Field => $freeform_multiple, Value => 'bar' ); + ok($ret, $msg); + + my $ocfvs = $ticket->CustomFieldValues($freeform_multiple)->ItemsArrayRef; + is( scalar @$ocfvs, 2, 'has 2 values'); + is( $ocfvs->[0]->Content, 'foo', 'first is foo' ); + is( $ocfvs->[1]->Content, 'bar', 'sencond is bar' ); +} + +{ + diag "testing select single cf"; + + my $select_single = RT::Test->load_or_create_custom_field( + Name => 'select single', + Type => 'SelectSingle', + Queue => 0, + ); + + for my $value ( qw/foo bar baz/ ) { + $select_single->AddValue( Name => $value ); + } + + ( $ret, $msg ) = + $ticket->AddCustomFieldValue( Field => $select_single, Value => 'foo' ); + ok( $ret, $msg ); + my $ocfv = $ticket->CustomFieldValues($select_single)->First; + is( $ticket->FirstCustomFieldValue($select_single), 'foo', 'value is foo' ); + ( $ret, $msg ) = + $ticket->AddCustomFieldValue( Field => $select_single, Value => 'foo' ); + is( $ret, $ocfv->id, "got the same previous object" ); + is( $ticket->FirstCustomFieldValue($select_single), 'foo', 'value is still foo' ); + + diag "select values are case insensitive"; + + ( $ret, $msg ) = + $ticket->AddCustomFieldValue( Field => $select_single, Value => 'FOO' ); + is( $ret, $ocfv->id, "got the same previous object" ); + is( $ticket->FirstCustomFieldValue($select_single), 'foo', 'value is still foo' ); + + ($ret, $msg) = $ticket->AddCustomFieldValue( Field => $select_single, Value => 'bar' ); + ok($ret, $msg); + isnt( $ret, $ocfv->id, "got a new value" ); + is( $ticket->FirstCustomFieldValue($select_single), 'bar', 'new value is bar' ); +} + +{ + diag "testing binary single cf"; + + my $binary_single = RT::Test->load_or_create_custom_field( + Name => 'upload single', + Type => 'BinarySingle', + Queue => 0, + ); + + ( $ret, $msg ) = + $ticket->AddCustomFieldValue( Field => $binary_single, Value => 'foo', LargeContent => 'bar' ); + ok( $ret, $msg ); + my $ocfv = $ticket->CustomFieldValues($binary_single)->First; + ( $ret, $msg ) = + $ticket->AddCustomFieldValue( Field => $binary_single, Value => 'foo', LargeContent => 'bar' ); + is( $ret, $ocfv->id, "got the same previous object" ); + is($ocfv->Content, 'foo', 'name is foo'); + is($ocfv->LargeContent, 'bar', 'content is bar'); + + ( $ret, $msg ) = + $ticket->AddCustomFieldValue( Field => $binary_single, Value => 'foo', LargeContent => 'baz' ); + ok( $ret, $msg ); + isnt( $ret, $ocfv->id, "got a new value" ); + $ocfv = $ticket->CustomFieldValues($binary_single)->First; + is($ocfv->Content, 'foo', 'name is foo'); + is($ocfv->LargeContent, 'baz', 'content is baz'); + + ( $ret, $msg ) = + $ticket->AddCustomFieldValue( Field => $binary_single, Value => 'foo.2', LargeContent => 'baz' ); + ok( $ret, $msg ); + isnt( $ret, $ocfv->id, "got a new value" ); + $ocfv = $ticket->CustomFieldValues($binary_single)->First; + is($ocfv->Content, 'foo.2', 'name is foo.2'); + is($ocfv->LargeContent, 'baz', 'content is baz'); +} + +done_testing(); |