summaryrefslogtreecommitdiff
path: root/rt/t/web/cf_select_one.t
diff options
context:
space:
mode:
Diffstat (limited to 'rt/t/web/cf_select_one.t')
-rw-r--r--rt/t/web/cf_select_one.t159
1 files changed, 159 insertions, 0 deletions
diff --git a/rt/t/web/cf_select_one.t b/rt/t/web/cf_select_one.t
new file mode 100644
index 0000000..39a8080
--- /dev/null
+++ b/rt/t/web/cf_select_one.t
@@ -0,0 +1,159 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use RT::Test tests => 41;
+
+my ($baseurl, $m) = RT::Test->started_ok;
+ok $m->login, 'logged in as root';
+
+my $cf_name = 'test select one value';
+
+my $cfid;
+diag "Create a CF" if $ENV{'TEST_VERBOSE'};
+{
+ $m->follow_link( text => 'Configuration' );
+ $m->title_is(q/RT Administration/, 'admin screen');
+ $m->follow_link( text => 'Custom Fields' );
+ $m->title_is(q/Select a Custom Field/, 'admin-cf screen');
+ $m->follow_link( text => 'Create' );
+ $m->submit_form(
+ form_name => "ModifyCustomField",
+ fields => {
+ Name => $cf_name,
+ TypeComposite => 'Select-1',
+ LookupType => 'RT::Queue-RT::Ticket',
+ },
+ );
+ $m->content_like( qr/Object created/, 'created CF sucessfully' );
+ $cfid = $m->form_name('ModifyCustomField')->value('id');
+ ok $cfid, "found id of the CF in the form, it's #$cfid";
+}
+
+diag "add 'qwe', 'ASD' and '0' as values to the CF" if $ENV{'TEST_VERBOSE'};
+{
+ foreach my $value(qw(qwe ASD 0)) {
+ $m->submit_form(
+ form_name => "ModifyCustomField",
+ fields => {
+ "CustomField-". $cfid ."-Value-new-Name" => $value,
+ },
+ button => 'Update',
+ );
+ $m->content_like( qr/Object created/, 'added a value to the CF' ); # or diag $m->content;
+ }
+}
+
+my $queue = RT::Test->load_or_create_queue( Name => 'General' );
+ok $queue && $queue->id, 'loaded or created queue';
+
+diag "apply the CF to General queue" if $ENV{'TEST_VERBOSE'};
+{
+ $m->follow_link( text => 'Queues' );
+ $m->title_is(q/Admin queues/, 'admin-queues screen');
+ $m->follow_link( text => 'General' );
+ $m->title_is(q/Editing Configuration for queue General/, 'admin-queue: general');
+ $m->follow_link( text => 'Ticket Custom Fields' );
+ $m->title_is(q/Edit Custom Fields for General/, 'admin-queue: general cfid');
+
+ $m->form_name('EditCustomFields');
+ $m->tick( "AddCustomField" => $cfid );
+ $m->click('UpdateCFs');
+
+ $m->content_like( qr/Object created/, 'TCF added to the queue' );
+}
+
+my $tid;
+diag "create a ticket using API with 'asd'(not 'ASD') as value of the CF"
+ if $ENV{'TEST_VERBOSE'};
+{
+ my $ticket = RT::Ticket->new( $RT::SystemUser );
+ my ($txnid, $msg);
+ ($tid, $txnid, $msg) = $ticket->Create(
+ Subject => 'test',
+ Queue => $queue->id,
+ "CustomField-$cfid" => 'asd',
+ );
+ ok $tid, "created ticket";
+ diag $msg if $msg && $ENV{'TEST_VERBOSE'};
+
+ # we use lc as we really don't care about case
+ # so if later we'll add canonicalization of value
+ # test should work
+ is lc $ticket->FirstCustomFieldValue( $cf_name ),
+ 'asd', 'assigned value of the CF';
+}
+
+diag "check that values of the CF are case insensetive(asd vs. ASD)"
+ if $ENV{'TEST_VERBOSE'};
+{
+ ok $m->goto_ticket( $tid ), "opened ticket's page";
+ $m->follow_link( text => 'Custom Fields' );
+ $m->title_like(qr/Modify ticket/i, 'modify ticket');
+ $m->content_like(qr/\Q$cf_name/, 'CF on the page');
+
+ my $value = $m->form_number(3)->value("Object-RT::Ticket-$tid-CustomField-$cfid-Values");
+ is lc $value, 'asd', 'correct value is selected';
+ $m->submit;
+ $m->content_unlike(qr/\Q$cf_name\E.*?changed/mi, 'field is not changed');
+
+ $value = $m->form_number(3)->value("Object-RT::Ticket-$tid-CustomField-$cfid-Values");
+ is lc $value, 'asd', 'the same value is still selected';
+
+ my $ticket = RT::Ticket->new( $RT::SystemUser );
+ $ticket->Load( $tid );
+ ok $ticket->id, 'loaded the ticket';
+ is lc $ticket->FirstCustomFieldValue( $cf_name ),
+ 'asd', 'value is still the same';
+}
+
+diag "check that 0 is ok value of the CF"
+ if $ENV{'TEST_VERBOSE'};
+{
+ ok $m->goto_ticket( $tid ), "opened ticket's page";
+ $m->follow_link( text => 'Custom Fields' );
+ $m->title_like(qr/Modify ticket/i, 'modify ticket');
+ $m->content_like(qr/\Q$cf_name/, 'CF on the page');
+
+ my $value = $m->form_number(3)->value("Object-RT::Ticket-$tid-CustomField-$cfid-Values");
+ is lc $value, 'asd', 'correct value is selected';
+ $m->select("Object-RT::Ticket-$tid-CustomField-$cfid-Values" => 0 );
+ $m->submit;
+ $m->content_like(qr/\Q$cf_name\E.*?changed/mi, 'field is changed');
+ $m->content_unlike(qr/0 is no longer a value for custom field/mi, 'no bad message in results');
+
+ $value = $m->form_number(3)->value("Object-RT::Ticket-$tid-CustomField-$cfid-Values");
+ is lc $value, '0', 'new value is selected';
+
+ my $ticket = RT::Ticket->new( $RT::SystemUser );
+ $ticket->Load( $tid );
+ ok $ticket->id, 'loaded the ticket';
+ is lc $ticket->FirstCustomFieldValue( $cf_name ),
+ '0', 'API returns correct value';
+}
+
+diag "check that we can set empty value when the current is 0"
+ if $ENV{'TEST_VERBOSE'};
+{
+ ok $m->goto_ticket( $tid ), "opened ticket's page";
+ $m->follow_link( text => 'Custom Fields' );
+ $m->title_like(qr/Modify ticket/i, 'modify ticket');
+ $m->content_like(qr/\Q$cf_name/, 'CF on the page');
+
+ my $value = $m->form_number(3)->value("Object-RT::Ticket-$tid-CustomField-$cfid-Values");
+ is lc $value, '0', 'correct value is selected';
+ $m->select("Object-RT::Ticket-$tid-CustomField-$cfid-Values" => '' );
+ $m->submit;
+ $m->content_like(qr/0 is no longer a value for custom field/mi, '0 is no longer a value');
+
+ $value = $m->form_number(3)->value("Object-RT::Ticket-$tid-CustomField-$cfid-Values");
+ is $value, '', '(no value) is selected';
+
+ my $ticket = RT::Ticket->new( $RT::SystemUser );
+ $ticket->Load( $tid );
+ ok $ticket->id, 'loaded the ticket';
+ is $ticket->FirstCustomFieldValue( $cf_name ),
+ undef, 'API returns correct value';
+}
+