6 use RT::Test nodata => 1, tests => 37;
10 my $queue_name = "CFSortQueue-$$";
11 my $queue = RT::Test->load_or_create_queue( Name => $queue_name );
12 ok($queue && $queue->id, "$queue_name - test queue creation");
15 my $cf_name = "Rights$$";
18 $cf = RT::CustomField->new( RT->SystemUser );
19 my ($ret, $msg) = $cf->Create(
22 Type => 'FreeformSingle',
24 ok($ret, "Custom Field Order created");
27 my $tester = RT::Test->load_or_create_user(
28 Name => 'tester', Password => 'password',
30 ok $tester && $tester->id, 'loaded or created user';
32 my $cc_role = RT::Group->new( $queue->CurrentUser );
33 $cc_role->LoadQueueRoleGroup( Type => 'Cc', Queue => $queue->id );
35 my $owner_role = RT::Group->new( $queue->CurrentUser );
36 $owner_role->LoadQueueRoleGroup( Type => 'Owner', Queue => $queue->id );
38 ok( RT::Test->set_rights(
39 { Principal => $tester, Right => [qw(SeeQueue ShowTicket CreateTicket ReplyToTicket Watch OwnTicket TakeTicket)] },
40 { Principal => $cc_role, Object => $queue, Right => [qw(SeeCustomField)] },
41 { Principal => $owner_role, Object => $queue, Right => [qw(ModifyCustomField)] },
45 my $ticket = RT::Ticket->new( $tester );
46 my ($tid, $msg) = $ticket->Create( Queue => $queue, Subject => 'test' );
47 ok $tid, "created ticket";
49 ok !$ticket->CustomFields->First, "see no fields";
53 my $ticket = RT::Ticket->new( $tester );
54 my ($tid, $msg) = $ticket->Create( Queue => $queue, Subject => 'test', Cc => $tester->id );
55 ok $tid, "created ticket";
57 my $cf = $ticket->CustomFields->First;
62 my $ticket = RT::Ticket->new( $tester );
63 my ($tid, $msg) = $ticket->Create( Queue => $queue, Subject => 'test', Cc => $tester->id );
64 ok $tid, "created ticket";
66 (my $status, $msg) = $ticket->AddCustomFieldValue( Field => $cf->Name, Value => 'test' );
67 ok !$status, "Can not change CF";
71 my $ticket = RT::Ticket->new( $tester );
72 my ($tid, $msg) = $ticket->Create( Queue => $queue, Subject => 'test', Cc => $tester->id, Owner => $tester->id );
73 ok $tid, "created ticket";
75 (my $status, $msg) = $ticket->AddCustomFieldValue( Field => $cf->Name, Value => 'test' );
76 ok $status, "Changed CF";
77 is $ticket->FirstCustomFieldValue( $cf->Name ), 'test';
79 ($status, $msg) = $ticket->DeleteCustomFieldValue( Field => $cf->Name, Value => 'test' );
80 ok $status, "Changed CF";
81 is $ticket->FirstCustomFieldValue( $cf->Name ), undef;
85 my $ticket = RT::Ticket->new( $tester );
86 my ($tid, $msg) = $ticket->Create( Queue => $queue, Subject => 'test', Cc => $tester->id, Owner => $tester->id );
87 ok $tid, "created ticket";
89 (my $status, $msg) = $ticket->AddCustomFieldValue( Field => $cf->id, Value => 'test' );
90 ok $status, "Changed CF";
91 is $ticket->FirstCustomFieldValue( $cf->id ), 'test';
93 ($status, $msg) = $ticket->DeleteCustomFieldValue( Field => $cf->id, Value => 'test' );
94 ok $status, "Changed CF";
95 is $ticket->FirstCustomFieldValue( $cf->id ), undef;
98 my ($baseurl, $m) = RT::Test->started_ok;
99 ok $m->login( tester => 'password' ), 'logged in';
101 diag "check that we don't have the cf on create";
104 form_name => "CreateTicketInQueue",
105 fields => { Queue => $queue->Name },
108 my $form = $m->form_name("TicketCreate");
109 my $cf_field = "Object-RT::Ticket--CustomField-". $cf->id ."-Value";
110 ok !$form->find_input( $cf_field ), 'no form field on the page';
113 form_name => "TicketCreate",
114 fields => { Subject => 'test' },
116 my ($tid) = ($m->content =~ /Ticket (\d+) created/i);
117 ok $tid, "created a ticket succesfully";
118 $m->content_lacks($cf_name, "don't see CF");
120 $m->follow_link( id => 'page-basics');
121 $form = $m->form_name('TicketModify');
122 $cf_field = "Object-RT::Ticket-$tid-CustomField-". $cf->id ."-Value";
123 ok !$form->find_input( $cf_field ), 'no form field on the page';
126 diag "check that we see CF as Cc";
128 my $ticket = RT::Ticket->new( $tester );
129 my ($tid, $msg) = $ticket->Create( Queue => $queue, Subject => 'test', Cc => $tester->id );
130 ok $tid, "created ticket";
132 ok $m->goto_ticket( $tid ), "opened ticket";
133 $m->content_contains($cf_name, "see CF");
136 diag "check that owner can see and edit CF";
138 my $ticket = RT::Ticket->new( $tester );
139 my ($tid, $msg) = $ticket->Create( Queue => $queue, Subject => 'test', Cc => $tester->id, Owner => $tester->id );
140 ok $tid, "created ticket";
142 ok $m->goto_ticket( $tid ), "opened ticket";
143 $m->content_contains($cf_name, "see CF");
145 $m->follow_link( id => 'page-basics');
146 my $form = $m->form_name('TicketModify');
147 my $cf_field = "Object-RT::Ticket-$tid-CustomField-". $cf->id ."-Value";
148 ok $form->find_input( $cf_field ), 'form field on the page';
151 form_name => 'TicketModify',
153 $cf_field => "changed cf",
157 ok $m->goto_ticket( $tid ), "opened ticket";
158 $m->content_contains($cf_name, "changed cf");