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