RT 4.0.22
[freeside.git] / rt / t / web / ticket-create-utf8.t
1
2 use strict;
3 use warnings;
4
5 use RT::Test tests => 43;
6
7 my $ru_test = "\x{442}\x{435}\x{441}\x{442}";
8 my $ru_support = "\x{43f}\x{43e}\x{434}\x{434}\x{435}\x{440}\x{436}\x{43a}\x{430}";
9
10 # latin-1 is very special in perl, we should test everything with latin-1 umlauts
11 # and not-ascii+not-latin1, for example cyrillic
12 my $l1_test = Encode::decode('latin-1', "t\xE9st");
13 my $l1_support = Encode::decode('latin-1', "supp\xF6rt");
14
15
16 my $q = RT::Test->load_or_create_queue( Name => 'Regression' );
17 ok $q && $q->id, 'loaded or created queue';
18
19 RT::Test->set_rights(
20     Principal => 'Everyone',
21     Right => ['CreateTicket', 'ShowTicket', 'SeeQueue', 'ReplyToTicket', 'ModifyTicket'],
22 );
23
24 my ($baseurl, $m) = RT::Test->started_ok;
25 ok $m->login, 'logged in';
26
27 # create a ticket with a subject only
28 foreach my $test_str ( $ru_test, $l1_test ) {
29     ok $m->goto_create_ticket( $q ), "go to create ticket";
30     $m->form_name('TicketCreate');
31     $m->field( Subject => $test_str );
32     $m->submit;
33
34     $m->content_like( 
35         qr{<td\s+class="message-header-value"[^>]*>\s*\Q$test_str\E\s*</td>}i,
36         'header on the page'
37     );
38
39     my $ticket = RT::Test->last_ticket;
40     is $ticket->Subject, $test_str, "correct subject";
41 }
42
43 # create a ticket with a subject and content
44 foreach my $test_str ( $ru_test, $l1_test ) {
45     foreach my $support_str ( $ru_support, $l1_support ) {
46         ok $m->goto_create_ticket( $q ), "go to create ticket";
47         $m->form_name('TicketCreate');
48         $m->field( Subject => $test_str );
49         $m->field( Content => $support_str );
50         $m->submit;
51
52         $m->content_like( 
53             qr{<td\s+class="message-header-value"[^>]*>\s*\Q$test_str\E\s*</td>}i,
54             'header on the page'
55         );
56         $m->content_contains(
57             $support_str,
58             'content on the page'
59         );
60
61         my $ticket = RT::Test->last_ticket;
62         is $ticket->Subject, $test_str, "correct subject";
63     }
64 }
65
66 # create a ticket with a subject and content
67 foreach my $test_str ( $ru_test, $l1_test ) {
68     foreach my $support_str ( $ru_support, $l1_support ) {
69         ok $m->goto_create_ticket( $q ), "go to create ticket";
70         $m->form_name('TicketCreate');
71         $m->field( Subject => $test_str );
72         $m->field( Content => $support_str );
73         $m->submit;
74
75         $m->content_like( 
76             qr{<td\s+class="message-header-value"[^>]*>\s*\Q$test_str\E\s*</td>}i,
77             'header on the page'
78         );
79         $m->content_contains(
80             $support_str,
81             'content on the page'
82         );
83
84         my $ticket = RT::Test->last_ticket;
85         is $ticket->Subject, $test_str, "correct subject";
86     }
87 }
88