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