RT 4.0.22
[freeside.git] / rt / t / customfields / repeated_values.t
1 use warnings;
2 use strict;
3
4 use RT::Test tests => undef;
5
6
7 my $ticket = RT::Test->create_ticket( Subject => 'test repeated values', Queue => 'General' );
8 my ( $ret, $msg );
9
10 {
11     diag "testing freeform single cf";
12     my $freeform_single = RT::Test->load_or_create_custom_field(
13         Name  => 'freeform single',
14         Type  => 'FreeformSingle',
15         Queue => 0,
16     );
17
18     ( $ret, $msg ) =
19       $ticket->AddCustomFieldValue( Field => $freeform_single, Value => 'foo' );
20     ok( $ret, $msg );
21     is( $ticket->FirstCustomFieldValue($freeform_single), 'foo', 'value is foo' );
22
23     my $ocfv = $ticket->CustomFieldValues($freeform_single)->First;
24     ( $ret, $msg ) =
25       $ticket->AddCustomFieldValue( Field => $freeform_single, Value => 'foo' );
26     is( $ret, $ocfv->id, "got the same previous object" );
27     is( $ticket->FirstCustomFieldValue($freeform_single), 'foo', 'value is still foo' );
28
29     ( $ret, $msg ) =
30       $ticket->AddCustomFieldValue( Field => $freeform_single, Value => 'FOO' );
31     ok( $ret, $msg );
32     isnt( $ret, $ocfv->id, "got a new value" );
33     is( $ticket->FirstCustomFieldValue($freeform_single), 'FOO', 'value is FOO' );
34 }
35
36 {
37     diag "testing freeform multiple cf";
38     my $freeform_multiple = RT::Test->load_or_create_custom_field(
39         Name  => 'freeform multiple',
40         Type  => 'FreeformMultiple',
41         Queue => 0,
42     );
43
44     ($ret, $msg) = $ticket->AddCustomFieldValue( Field => $freeform_multiple, Value => 'foo' );
45     ok($ret, $msg);
46     is( $ticket->FirstCustomFieldValue($freeform_multiple), 'foo', 'value is foo' );
47
48     my $ocfv = $ticket->CustomFieldValues($freeform_multiple)->First;
49     ($ret, $msg) = $ticket->AddCustomFieldValue( Field => $freeform_multiple, Value => 'foo' );
50     is($ret, $ocfv->id, "got the same previous object");
51     is( $ticket->FirstCustomFieldValue($freeform_multiple), 'foo', 'value is still foo' );
52
53     ($ret, $msg) = $ticket->AddCustomFieldValue( Field => $freeform_multiple, Value => 'bar' );
54     ok($ret, $msg);
55
56     my $ocfvs = $ticket->CustomFieldValues($freeform_multiple)->ItemsArrayRef;
57     is( scalar @$ocfvs, 2, 'has 2 values');
58     is( $ocfvs->[0]->Content, 'foo', 'first is foo' );
59     is( $ocfvs->[1]->Content, 'bar', 'sencond is bar' );
60 }
61
62 {
63     diag "testing select single cf";
64
65     my $select_single = RT::Test->load_or_create_custom_field(
66         Name  => 'select single',
67         Type  => 'SelectSingle',
68         Queue => 0,
69     );
70
71     for my $value ( qw/foo bar baz/ ) {
72         $select_single->AddValue( Name => $value );
73     }
74
75     ( $ret, $msg ) =
76       $ticket->AddCustomFieldValue( Field => $select_single, Value => 'foo' );
77     ok( $ret, $msg );
78     my $ocfv = $ticket->CustomFieldValues($select_single)->First;
79     is( $ticket->FirstCustomFieldValue($select_single), 'foo', 'value is foo' );
80     ( $ret, $msg ) =
81       $ticket->AddCustomFieldValue( Field => $select_single, Value => 'foo' );
82     is( $ret, $ocfv->id, "got the same previous object" );
83     is( $ticket->FirstCustomFieldValue($select_single), 'foo', 'value is still foo' );
84
85     diag "select values are case insensitive";
86
87     ( $ret, $msg ) =
88       $ticket->AddCustomFieldValue( Field => $select_single, Value => 'FOO' );
89     is( $ret, $ocfv->id, "got the same previous object" );
90     is( $ticket->FirstCustomFieldValue($select_single), 'foo', 'value is still foo' );
91
92     ($ret, $msg) = $ticket->AddCustomFieldValue( Field => $select_single, Value => 'bar' );
93     ok($ret, $msg);
94     isnt( $ret, $ocfv->id, "got a new value" );
95     is( $ticket->FirstCustomFieldValue($select_single), 'bar', 'new value is bar' );
96 }
97
98 {
99     diag "testing binary single cf";
100
101     my $binary_single = RT::Test->load_or_create_custom_field(
102         Name  => 'upload single',
103         Type  => 'BinarySingle',
104         Queue => 0,
105     );
106
107     ( $ret, $msg ) =
108       $ticket->AddCustomFieldValue( Field => $binary_single, Value => 'foo', LargeContent => 'bar' );
109     ok( $ret, $msg );
110     my $ocfv = $ticket->CustomFieldValues($binary_single)->First;
111     ( $ret, $msg ) =
112       $ticket->AddCustomFieldValue( Field => $binary_single, Value => 'foo', LargeContent => 'bar' );
113     is( $ret, $ocfv->id, "got the same previous object" );
114     is($ocfv->Content, 'foo', 'name is foo');
115     is($ocfv->LargeContent, 'bar', 'content is bar');
116
117     ( $ret, $msg ) =
118       $ticket->AddCustomFieldValue( Field => $binary_single, Value => 'foo', LargeContent => 'baz' );
119     ok( $ret, $msg );
120     isnt( $ret, $ocfv->id, "got a new value" );
121     $ocfv = $ticket->CustomFieldValues($binary_single)->First;
122     is($ocfv->Content, 'foo', 'name is foo');
123     is($ocfv->LargeContent, 'baz', 'content is baz');
124
125     ( $ret, $msg ) =
126       $ticket->AddCustomFieldValue( Field => $binary_single, Value => 'foo.2', LargeContent => 'baz' );
127     ok( $ret, $msg );
128     isnt( $ret, $ocfv->id, "got a new value" );
129     $ocfv = $ticket->CustomFieldValues($binary_single)->First;
130     is($ocfv->Content, 'foo.2', 'name is foo.2');
131     is($ocfv->LargeContent, 'baz', 'content is baz');
132 }
133
134 done_testing();