fix ticketing system error on bootstrap of new install
[freeside.git] / rt / t / shredder / 02queue.t
1
2 use strict;
3 use warnings;
4
5 use Test::Deep;
6 use RT::Test::Shredder tests => 21;
7 my $test = "RT::Test::Shredder";
8
9 diag 'simple queue' if $ENV{TEST_VERBOSE};
10 {
11     $test->create_savepoint('clean');
12     my $queue = RT::Queue->new( RT->SystemUser );
13     my ($id, $msg) = $queue->Create( Name => 'my queue' );
14     ok($id, 'created queue') or diag "error: $msg";
15
16     my $shredder = $test->shredder_new();
17     $shredder->PutObjects( Objects => $queue );
18     $shredder->WipeoutAll;
19     $test->db_is_valid;
20     cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");
21 }
22
23 diag 'queue with scrip' if $ENV{TEST_VERBOSE};
24 {
25     $test->create_savepoint('clean');
26     my $queue = RT::Queue->new( RT->SystemUser );
27     my ($id, $msg) = $queue->Create( Name => 'my queue' );
28     ok($id, 'created queue') or diag "error: $msg";
29
30     my $scrip = RT::Scrip->new( RT->SystemUser );
31     ($id, $msg) = $scrip->Create(
32         Description    => 'my scrip',
33         Queue          => $queue->id,
34         ScripCondition => 'On Create',
35         ScripAction    => 'Open Tickets',
36         Template       => 'Blank',
37     );
38     ok($id, 'created scrip') or diag "error: $msg";
39
40     my $shredder = $test->shredder_new();
41     $shredder->PutObjects( Objects => $queue );
42     $shredder->WipeoutAll;
43     $test->db_is_valid;
44     cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");
45 }
46
47 diag 'queue with template' if $ENV{TEST_VERBOSE};
48 {
49     $test->create_savepoint('clean');
50     my $queue = RT::Queue->new( RT->SystemUser );
51     my ($id, $msg) = $queue->Create( Name => 'my queue' );
52     ok($id, 'created queue') or diag "error: $msg";
53
54     my $template = RT::Template->new( RT->SystemUser );
55     ($id, $msg) = $template->Create(
56         Name => 'my template',
57         Queue => $queue->id,
58         Content => "\nsome content",
59     );
60     ok($id, 'created template') or diag "error: $msg";
61
62     my $shredder = $test->shredder_new();
63     $shredder->PutObjects( Objects => $queue );
64     $shredder->WipeoutAll;
65     $test->db_is_valid;
66     cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");
67 }
68
69 diag 'queue with a right granted' if $ENV{TEST_VERBOSE};
70 {
71     $test->create_savepoint('clean');
72     my $queue = RT::Queue->new( RT->SystemUser );
73     my ($id, $msg) = $queue->Create( Name => 'my queue' );
74     ok($id, 'created queue') or diag "error: $msg";
75
76     my $group = RT::Group->new( RT->SystemUser );
77     $group->LoadSystemInternalGroup('Everyone');
78     ok($group->id, 'loaded group');
79
80     ($id, $msg) = $group->PrincipalObj->GrantRight(
81         Right  => 'CreateTicket',
82         Object => $queue,
83     );
84     ok($id, 'granted right') or diag "error: $msg";
85
86     my $shredder = $test->shredder_new();
87     $shredder->PutObjects( Objects => $queue );
88     $shredder->WipeoutAll;
89     $test->db_is_valid;
90     cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");
91 }
92
93 diag 'queue with a watcher' if $ENV{TEST_VERBOSE};
94 {
95 # XXX, FIXME: if uncomment these lines then we'll get 'Bizarre...'
96 #    $test->create_savepoint('clean');
97     my $group = RT::Group->new( RT->SystemUser );
98     my ($id, $msg) = $group->CreateUserDefinedGroup(Name => 'my group');
99     ok($id, 'created group') or diag "error: $msg";
100
101     $test->create_savepoint('bqcreate');
102     my $queue = RT::Queue->new( RT->SystemUser );
103     ($id, $msg) = $queue->Create( Name => 'my queue' );
104     ok($id, 'created queue') or diag "error: $msg";
105
106     ($id, $msg) = $queue->AddWatcher(
107         Type   => 'Cc',
108         PrincipalId => $group->id,
109     );
110     ok($id, 'added watcher') or diag "error: $msg";
111
112     my $shredder = $test->shredder_new();
113     $shredder->PutObjects( Objects => $queue );
114     $shredder->WipeoutAll;
115     $test->db_is_valid;
116     cmp_deeply( $test->dump_current_and_savepoint('bqcreate'), "current DB equal to savepoint");
117
118 #    $shredder->PutObjects( Objects => $group );
119 #    $shredder->WipeoutAll;
120 #    cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");
121 }