5 use RT::Test nodata => 1, tests => 47;
9 my $queue_name = "CFSortQueue-$$";
10 my $queue = RT::Test->load_or_create_queue( Name => $queue_name );
11 ok($queue && $queue->id, "$queue_name - test queue creation");
14 my $cf_name = "Rights$$";
17 $cf = RT::CustomField->new( RT->SystemUser );
18 my ($ret, $msg) = $cf->Create(
21 Type => 'FreeformSingle',
23 ok($ret, "Custom Field Order created");
26 my $tester = RT::Test->load_or_create_user(
27 Name => 'tester', Password => 'password',
29 ok $tester && $tester->id, 'loaded or created user';
31 my $cc_role = RT::Group->new( $queue->CurrentUser );
32 $cc_role->LoadQueueRoleGroup( Type => 'Cc', Queue => $queue->id );
34 my $owner_role = RT::Group->new( $queue->CurrentUser );
35 $owner_role->LoadQueueRoleGroup( Type => 'Owner', Queue => $queue->id );
37 ok( RT::Test->set_rights(
38 { Principal => $tester, Right => [qw(SeeQueue ShowTicket CreateTicket ReplyToTicket Watch OwnTicket TakeTicket)] },
39 { Principal => $cc_role, Object => $queue, Right => [qw(SeeCustomField)] },
40 { Principal => $owner_role, Object => $queue, Right => [qw(ModifyCustomField)] },
44 my $ticket = RT::Ticket->new( $tester );
45 my ($tid, $msg) = $ticket->Create( Queue => $queue, Subject => 'test' );
46 ok $tid, "created ticket";
48 ok !$ticket->CustomFields->First, "see no fields";
52 my $ticket = RT::Ticket->new( $tester );
53 my ($tid, $msg) = $ticket->Create( Queue => $queue, Subject => 'test', Cc => $tester->id );
54 ok $tid, "created ticket";
56 my $cf = $ticket->CustomFields->First;
61 my $ticket = RT::Ticket->new( $tester );
62 my ($tid, $msg) = $ticket->Create( Queue => $queue, Subject => 'test', Cc => $tester->id );
63 ok $tid, "created ticket";
65 (my $status, $msg) = $ticket->AddCustomFieldValue( Field => $cf->Name, Value => 'test' );
66 ok !$status, "Can not change CF";
70 my $ticket = RT::Ticket->new( $tester );
71 my ($tid, $msg) = $ticket->Create( Queue => $queue, Subject => 'test', Cc => $tester->id, Owner => $tester->id );
72 ok $tid, "created ticket";
74 (my $status, $msg) = $ticket->AddCustomFieldValue( Field => $cf->Name, Value => 'test' );
75 ok $status, "Changed CF";
76 is $ticket->FirstCustomFieldValue( $cf->Name ), 'test';
78 ($status, $msg) = $ticket->DeleteCustomFieldValue( Field => $cf->Name, Value => 'test' );
79 ok $status, "Changed CF";
80 is $ticket->FirstCustomFieldValue( $cf->Name ), undef;
84 my $ticket = RT::Ticket->new( $tester );
85 my ($tid, $msg) = $ticket->Create( Queue => $queue, Subject => 'test', Cc => $tester->id, Owner => $tester->id );
86 ok $tid, "created ticket";
88 (my $status, $msg) = $ticket->AddCustomFieldValue( Field => $cf->id, Value => 'test' );
89 ok $status, "Changed CF";
90 is $ticket->FirstCustomFieldValue( $cf->id ), 'test';
92 ($status, $msg) = $ticket->DeleteCustomFieldValue( Field => $cf->id, Value => 'test' );
93 ok $status, "Changed CF";
94 is $ticket->FirstCustomFieldValue( $cf->id ), undef;
97 my ($baseurl, $m) = RT::Test->started_ok;
98 ok $m->login( tester => 'password' ), 'logged in';
100 diag "check that we don't have the cf on create";
103 form_name => "CreateTicketInQueue",
104 fields => { Queue => $queue->Name },
107 my $form = $m->form_name("TicketCreate");
108 my $cf_field = "Object-RT::Ticket--CustomField-". $cf->id ."-Value";
109 ok !$form->find_input( $cf_field ), 'no form field on the page';
112 form_name => "TicketCreate",
113 fields => { Subject => 'test' },
115 my ($tid) = ($m->content =~ /Ticket (\d+) created/i);
116 ok $tid, "created a ticket succesfully";
117 $m->content_lacks($cf_name, "don't see CF");
119 $m->follow_link( id => 'page-basics');
120 $form = $m->form_name('TicketModify');
121 $cf_field = "Object-RT::Ticket-$tid-CustomField-". $cf->id ."-Value";
122 ok !$form->find_input( $cf_field ), 'no form field on the page';
125 diag "check that we see CF as Cc";
127 my $ticket = RT::Ticket->new( $tester );
128 my ($tid, $msg) = $ticket->Create( Queue => $queue, Subject => 'test', Cc => $tester->id );
129 ok $tid, "created ticket";
131 ok $m->goto_ticket( $tid ), "opened ticket";
132 $m->content_contains($cf_name, "see CF");
135 diag "check that owner can see and edit CF";
137 my $ticket = RT::Ticket->new( $tester );
138 my ($tid, $msg) = $ticket->Create( Queue => $queue, Subject => 'test', Cc => $tester->id, Owner => $tester->id );
139 ok $tid, "created ticket";
141 ok $m->goto_ticket( $tid ), "opened ticket";
142 $m->content_contains($cf_name, "see CF");
144 $m->follow_link( id => 'page-basics');
145 my $form = $m->form_name('TicketModify');
146 my $cf_field = "Object-RT::Ticket-$tid-CustomField-". $cf->id ."-Value";
147 ok $form->find_input( $cf_field ), 'form field on the page';
150 form_name => 'TicketModify',
152 $cf_field => "changed cf",
156 ok $m->goto_ticket( $tid ), "opened ticket";
157 $m->content_contains($cf_name, "changed cf");
160 note 'make sure CF is not reset to no value';
162 my $t = RT::Test->create_ticket(
165 'CustomField-'.$cf->id => '2012-02-12',
167 Owner => $tester->id,
169 ok $t && $t->id, 'created ticket';
170 is $t->FirstCustomFieldValue($cf_name), '2012-02-12';
172 $m->goto_ticket($t->id);
173 $m->follow_link_ok({id => 'page-basics'});
174 my $form = $m->form_name('TicketModify');
175 my $input = $form->find_input(
176 'Object-RT::Ticket-'. $t->id .'-CustomField-'. $cf->id .'-Value'
178 ok $input, 'found input';
179 $m->click('SubmitTicket');
182 $t = RT::Ticket->new( $RT::SystemUser );
184 is $t->FirstCustomFieldValue($cf_name), '2012-02-12';