fix ticketing system error on bootstrap of new install
[freeside.git] / rt / t / web / ticket_preserve_basics.t
1 use strict;
2 use warnings;
3
4 use RT::Test tests => undef;
5
6 my $ticket = RT::Test->create_ticket(
7     Subject => 'test ticket basics',
8     Queue   => 1,
9 );
10
11 my ( $url, $m ) = RT::Test->started_ok;
12 ok( $m->login, 'logged in' );
13
14 my $root = RT::Test->load_or_create_user( Name => 'root' );
15
16 # Failing test where the time units are not preserved when you
17 # click 'Add more files' on Display
18 my @form_tries = (
19     {Subject => "hello rt"},
20     {Status  => "open"},
21     {Owner   => $root->id},
22
23     (
24         map +{
25             "Time$_"           => undef,
26             "Time$_-TimeUnits" => 'hours',
27         }, qw/Estimated Worked Left/
28     ),
29     (
30         map +{
31             "Time$_"           => '1',
32             "Time$_-TimeUnits" => 'hours',
33         }, qw/Estimated Worked Left/
34     ),
35
36     {InitialPriority      => "10"},
37     {FinalPriority => "10"},
38 );
39
40 for my $try (@form_tries) {
41     $m->goto_create_ticket(1);
42     $m->form_name('TicketCreate');
43     $m->set_fields(%$try);
44     $m->click('AddMoreAttach');
45     $m->form_name('TicketCreate');
46     for my $field (keys %$try) {
47         is(
48             $m->value($field),
49             defined($try->{$field}) ? $try->{$field} : '',
50             "field $field is the same after the form was submitted"
51         );
52     }
53 }
54
55 # Test for time unit preservation in Jumbo
56 for my $try (@form_tries) {
57     my $jumbo_ticket = RT::Test->create_ticket(
58         Subject => 'test jumbo ticket basics',
59         Queue   => 1,
60     );
61
62     local($try->{Priority}) = delete local($try->{InitialPriority})
63         if exists $try->{InitialPriority};
64
65     $m->get( $url . "/Ticket/ModifyAll.html?id=" . $jumbo_ticket->id );
66     $m->form_name('TicketModifyAll');
67     $m->set_fields(%$try);
68     $m->click('AddMoreAttach');
69     $m->form_name('TicketModifyAll');
70     for my $field (keys %$try) {
71         is(
72             $m->value($field),
73             defined($try->{$field}) ? $try->{$field} : '',
74             "field $field is the same after the Jumbo form was submitted"
75         );
76     }
77 }
78
79 my $cf = RT::Test->load_or_create_custom_field(
80     Name       => 'CF1',
81     Type       => 'Freeform',
82     Pattern    => '.', # mandatory
83     Queue      => 'General',
84 );
85
86 # More time unit testing by a failing CF validation
87 $m->get_ok($url.'/Admin/CustomFields/Objects.html?id='.$cf->id);
88 $m->form_with_fields('UpdateObjs');
89 $m->tick('AddCustomField-'.$cf->id => '0'); # Make CF global
90 $m->click('UpdateObjs');
91 $m->text_contains('Object created', 'CF applied globally');
92
93 # Test for preservation when a ticket is submitted and CF validation fails
94 for my $try (@form_tries) {
95     $m->goto_create_ticket(1);
96     $m->form_name('TicketCreate');
97     $m->set_fields(%$try);
98     $m->submit();
99     $m->form_name('TicketCreate');
100     for my $field (keys %$try) {
101         is(
102             $m->value($field),
103             defined($try->{$field}) ? $try->{$field} : '',
104             "field $field is the same after the form was submitted"
105         );
106     }
107 }
108
109 undef $m;
110 done_testing();