Merge branch 'master' of https://github.com/jgoodman/Freeside
[freeside.git] / rt / t / web / rest_cfs_with_same_name.t
1 use strict;
2 use warnings;
3 use RT::Interface::REST;
4
5 use RT::Test tests => 25;
6
7 my ( $baseurl, $m ) = RT::Test->started_ok;
8 for my $queue_name (qw/foo bar/) {
9
10     my $queue = RT::Test->load_or_create_queue( Name => $queue_name );
11     ok( $queue, "created queue $queue_name" );
12     my $cf = RT::Test->load_or_create_custom_field(
13         Name  => 'test',
14         Type  => 'Freeform',
15         Queue => $queue_name,
16     );
17     ok( $cf->id, "created cf test for queue $queue_name " . $cf->id );
18
19     $m->post(
20         "$baseurl/REST/1.0/ticket/new",
21         [
22             user   => 'root',
23             pass   => 'password',
24             format => 'l',
25         ]
26     );
27
28     my $text = $m->content;
29     my @lines = $text =~ m{.*}g;
30     shift @lines;    # header
31
32     # cfs aren't in the default ticket form
33     push @lines, "CF.{test}: baz";
34
35     $text = join "\n", @lines;
36
37     ok( $text =~ s/Subject:\s*$/Subject: test cf/m,
38         "successfully replaced subject" );
39     ok( $text =~ s/Queue: General\s*$/Queue: $queue_name/m,
40         "successfully replaced Queue" );
41
42     $m->post(
43         "$baseurl/REST/1.0/ticket/edit",
44         [
45             user => 'root',
46             pass => 'password',
47             content => $text,
48         ],
49         Content_Type => 'form-data'
50     );
51
52     my ($id) = $m->content =~ /Ticket (\d+) created/;
53     ok( $id, "got ticket #$id" );
54
55     my $ticket = RT::Ticket->new( RT->SystemUser );
56     $ticket->Load($id);
57     is( $ticket->id,      $id,       "loaded the REST-created ticket" );
58     is( $ticket->Subject, "test cf", "subject successfully set" );
59     is( $ticket->Queue, $queue->id, "queue successfully set" );
60     is( $ticket->FirstCustomFieldValue("test"), "baz", "cf successfully set" );
61
62     $m->post(
63         "$baseurl/REST/1.0/ticket/show",
64         [
65             user   => 'root',
66             pass   => 'password',
67             format => 'l',
68             id     => "ticket/$id",
69         ]
70     );
71     $text = $m->content;
72     like( $text, qr/^CF\.\{test\}: baz\s*$/m, 'cf value in rest show' );
73
74     $text =~ s{.*}{}; # remove header
75     $text =~ s!CF\.\{test\}: baz!CF.{test}: newbaz!;
76     $m->post(
77         "$baseurl/REST/1.0/ticket/edit",
78         [
79             user => 'root',
80             pass => 'password',
81             content => $text,
82         ],
83         Content_Type => 'form-data'
84     );
85     $m->content =~ /Ticket ($id) updated/;
86     is( $ticket->FirstCustomFieldValue("test"), "newbaz", "cf successfully updated" );
87 }
88