File: ticket_display_unset_fields.t

package info (click to toggle)
request-tracker5 5.0.7%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 80,216 kB
  • sloc: javascript: 191,898; perl: 87,146; sh: 1,412; makefile: 487; python: 37; php: 15
file content (120 lines) | stat: -rw-r--r-- 3,570 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
use strict;
use warnings;

use RT::Test tests => undef, config => 'Set( $HideUnsetFieldsOnDisplay, 1 );';

my @link_classes = qw(
    DependsOn
    DependedOnBy
    MemberOf
    Members
    RefersTo
    ReferredToBy
);

my $foo = RT::Test->create_ticket(
    Queue   => 'General',
    Subject => 'test display page',
);
my $dep = RT::Test->create_ticket(
    Queue   => 'General',
    Subject => 'dep ticket',
);
my $bar = RT::Test->create_ticket(
    Queue     => 'General',
    Subject   => 'depend ticket',
    Starts    => '2011-07-08 00:00:00',
    Started   => '2011-07-09 00:00:00',
    Resolved  => '2011-07-11 00:00:00',
    Due       => '2011-07-12 00:00:00',
    Cc        => 'foo@example.com',
    AdminCc   => 'admin@example.com',
    DependsOn => [ $dep->id ],
);
$bar->SetTold;

my ( $baseurl, $m ) = RT::Test->started_ok;
diag "URL is: $baseurl";

diag "test with root";
{
    $m->login;
    $m->goto_ticket( $foo->id );

    my $dom = $m->dom;

    for my $class (qw/starts started due resolved cc admincc/) {
        is $dom->find(qq{div.$class.unset-field})->size, 1, "found unset $class";
    }

    is $dom->find(qq{div.told:not(.unset-field)})->size, 1, "has Told as root can modify it";

    for my $class (@link_classes) {
        is $dom->find(qq{div.$class:not(.unset-field)})->size, 1, "has $class as root can create";
    }

    $m->goto_ticket( $bar->id );
    $dom = $m->dom;
    for my $class (qw/starts started due resolved cc admincc/) {
        is $dom->find(qq{div.$class:not(.unset-field)})->size, 1, "has $class as value is set";
    }
}

diag "test without ModifyTicket right";
{
    my $user =
      RT::Test->load_or_create_user( Name => 'foo', Password => 'password' );
    RT::Test->set_rights( Principal => $user, Right => ['ShowTicket'] );
    $m->login( 'foo', 'password', logout => 1 );
    $m->goto_ticket( $foo->id );
    my $dom = $m->dom;
    is $dom->find(qq{div.told.unset-field})->size, 1, "lacks Told as it is unset and user has no modify right";
    for my $class ( @link_classes ) {
        is $dom->find(qq{div.$class.unset-field})->size, 1, "lacks $class as it is unset and user has no modify right";
    }

    $m->goto_ticket( $bar->id );
    $dom = $m->dom;
    is $dom->find(qq{div.DependsOn:not(.unset-field)})->size, 1, "has Depends on as it is set";
}

diag "Test unset custom fields";
{
    my $cf = RT::Test->load_or_create_custom_field(
        Name        => 'TextArea',
        Type        => 'Text',
        Queue       => 0,
        LookupType  => 'RT::Queue-RT::Ticket',
    );
    ok $cf && $cf->id, "Created TextArea CF";

    $m->login( 'root', 'password', logout => 1 );
    $m->goto_ticket( $foo->id );
    my $dom = $m->dom;
    my $cfid = $cf->Id;
    is $dom->find(qq{div.custom-field.custom-field-$cfid.unset-field})->size, 1, "found unset custom field";

    # open ticket "Basics" page
    my $EditUrl = "/Ticket/Modify.html?id=" . $foo->id;
    $m->get_ok($EditUrl, "Fetched $EditUrl");
    $m->content_contains('TextArea:');

    my $cf_input = RT::Interface::Web::GetCustomFieldInputName(
            Object      => $foo,
            CustomField => $cf,
        );

    $m->submit_form_ok({
        with_fields => {
            $cf_input            => 'some unique content',
            $cf_input . '-Magic' => "1",
        },
    }, 'submitted form to initially set CFs');

    $m->goto_ticket( $foo->id );
    $dom = $m->dom;
    $m->content_contains('some unique content');
    isnt $dom->find(qq{div.customfield.unset-field})->size, 1, "no unset custom fields";
}

done_testing;