first pass RT4 merge, RT#13852
[freeside.git] / rt / t / customfields / pattern.t
1 #!/usr/bin/perl
2 use warnings;
3 use strict;
4
5 use RT;
6 use RT::Test nodata => 1, tests => 17;
7
8 my $q = RT::Queue->new($RT::SystemUser);
9 works($q->Create(Name => "CF-Pattern-".$$));
10
11 my $cf = RT::CustomField->new($RT::SystemUser);
12 my @cf_args = (Name => $q->Name, Type => 'Freeform', Queue => $q->id, MaxValues => 1);
13
14 fails($cf->Create(@cf_args, Pattern => ')))bad!regex((('));
15 works($cf->Create(@cf_args, Pattern => 'good regex'));
16
17 my $t = RT::Ticket->new($RT::SystemUser);
18 my ($id,undef,$msg) = $t->Create(Queue => $q->id, Subject => 'CF Test');
19 works($id,$msg);
20
21 # OK, I'm thoroughly brain washed by HOP at this point now...
22 sub cnt { $t->CustomFieldValues($cf->id)->Count };
23 sub add { $t->AddCustomFieldValue(Field => $cf->id, Value => $_[0]) };
24 sub del { $t->DeleteCustomFieldValue(Field => $cf->id, Value => $_[0]) };
25
26 is(cnt(), 0, "No values yet");
27 fails(add('not going to match'));
28 is(cnt(), 0, "No values yet");
29 works(add('here is a good regex'));
30 is(cnt(), 1, "Value filled");
31 fails(del('here is a good regex'));
32 is(cnt(), 1, "Single CF - Value _not_ deleted");
33
34 $cf->SetMaxValues(0);   # Unlimited MaxValues
35
36 works(del('here is a good regex'));
37 is(cnt(), 0, "Multiple CF - Value deleted");
38
39 fails($cf->SetPattern('(?{ "insert evil code here" })'));
40 works($cf->SetPattern('(?!)')); # reject everything
41 fails(add(''));
42 fails(add('...'));
43
44 undef $t;