summaryrefslogtreecommitdiff
path: root/rt/t/customfields
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2014-09-15 20:44:48 -0700
committerIvan Kohler <ivan@freeside.biz>2014-09-15 20:44:48 -0700
commited1f84b4e8f626245995ecda5afcf83092c153b2 (patch)
tree3f58bbef5fbf2502e65d29b37b5dbe537519e89d /rt/t/customfields
parentfe9ea9183e8a16616d6d04a7b5c7498d28e78248 (diff)
RT 4.0.22
Diffstat (limited to 'rt/t/customfields')
-rw-r--r--rt/t/customfields/date.t86
-rw-r--r--rt/t/customfields/datetime.t76
-rw-r--r--rt/t/customfields/iprangev6.t2
-rw-r--r--rt/t/customfields/repeated_values.t134
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();