import rt 3.8.7
[freeside.git] / rt / t / shredder / 02queue.t
diff --git a/rt/t/shredder/02queue.t b/rt/t/shredder/02queue.t
new file mode 100644 (file)
index 0000000..197cf63
--- /dev/null
@@ -0,0 +1,125 @@
+#!/usr/bin/perl -w
+
+use strict;
+use warnings;
+
+use Test::Deep;
+use File::Spec;
+use Test::More tests => 16;
+use RT::Test ();
+BEGIN {
+    my $shredder_utils = RT::Test::get_relocatable_file('utils.pl',
+        File::Spec->curdir());
+    require $shredder_utils;
+}
+init_db();
+
+
+diag 'simple queue' if $ENV{'TEST_VERBOSE'};
+{
+       create_savepoint('clean');
+    my $queue = RT::Queue->new( $RT::SystemUser );
+    my ($id, $msg) = $queue->Create( Name => 'my queue' );
+    ok($id, 'created queue') or diag "error: $msg";
+
+       my $shredder = shredder_new();
+       $shredder->PutObjects( Objects => $queue );
+       $shredder->WipeoutAll;
+       cmp_deeply( dump_current_and_savepoint('clean'), "current DB equal to savepoint");
+}
+
+diag 'queue with scrip' if $ENV{'TEST_VERBOSE'};
+{
+       create_savepoint('clean');
+    my $queue = RT::Queue->new( $RT::SystemUser );
+    my ($id, $msg) = $queue->Create( Name => 'my queue' );
+    ok($id, 'created queue') or diag "error: $msg";
+
+    my $scrip = RT::Scrip->new( $RT::SystemUser );
+    ($id, $msg) = $scrip->Create(
+        Description    => 'my scrip',
+        Queue          => $queue->id,
+        ScripCondition => 'On Create',
+        ScripAction    => 'Open Tickets',
+        Template       => 'Blank',
+    );
+    ok($id, 'created scrip') or diag "error: $msg";
+
+       my $shredder = shredder_new();
+       $shredder->PutObjects( Objects => $queue );
+       $shredder->WipeoutAll;
+       cmp_deeply( dump_current_and_savepoint('clean'), "current DB equal to savepoint");
+}
+
+diag 'queue with template' if $ENV{'TEST_VERBOSE'};
+{
+       create_savepoint('clean');
+    my $queue = RT::Queue->new( $RT::SystemUser );
+    my ($id, $msg) = $queue->Create( Name => 'my queue' );
+    ok($id, 'created queue') or diag "error: $msg";
+
+    my $template = RT::Template->new( $RT::SystemUser );
+    ($id, $msg) = $template->Create(
+        Name => 'my template',
+        Queue => $queue->id,
+        Content => "\nsome content",
+    );
+    ok($id, 'created template') or diag "error: $msg";
+
+       my $shredder = shredder_new();
+       $shredder->PutObjects( Objects => $queue );
+       $shredder->WipeoutAll;
+       cmp_deeply( dump_current_and_savepoint('clean'), "current DB equal to savepoint");
+}
+
+diag 'queue with a right granted' if $ENV{'TEST_VERBOSE'};
+{
+       create_savepoint('clean');
+    my $queue = RT::Queue->new( $RT::SystemUser );
+    my ($id, $msg) = $queue->Create( Name => 'my queue' );
+    ok($id, 'created queue') or diag "error: $msg";
+
+    my $group = RT::Group->new( $RT::SystemUser );
+    $group->LoadSystemInternalGroup('Everyone');
+    ok($group->id, 'loaded group');
+
+    ($id, $msg) = $group->PrincipalObj->GrantRight(
+        Right  => 'CreateTicket',
+        Object => $queue,
+    );
+    ok($id, 'granted right') or diag "error: $msg";
+
+       my $shredder = shredder_new();
+       $shredder->PutObjects( Objects => $queue );
+       $shredder->WipeoutAll;
+       cmp_deeply( dump_current_and_savepoint('clean'), "current DB equal to savepoint");
+}
+
+diag 'queue with a watcher' if $ENV{'TEST_VERBOSE'};
+{
+# XXX, FIXME: if uncomment these lines then we'll get 'Bizarre...'
+#      create_savepoint('clean');
+    my $group = RT::Group->new( $RT::SystemUser );
+    my ($id, $msg) = $group->CreateUserDefinedGroup(Name => 'my group');
+    ok($id, 'created group') or diag "error: $msg";
+
+       create_savepoint('bqcreate');
+    my $queue = RT::Queue->new( $RT::SystemUser );
+    ($id, $msg) = $queue->Create( Name => 'my queue' );
+    ok($id, 'created queue') or diag "error: $msg";
+
+    ($id, $msg) = $queue->AddWatcher(
+        Type   => 'Cc',
+        PrincipalId => $group->id,
+    );
+    ok($id, 'added watcher') or diag "error: $msg";
+
+       my $shredder = shredder_new();
+       $shredder->PutObjects( Objects => $queue );
+       $shredder->WipeoutAll;
+       cmp_deeply( dump_current_and_savepoint('bqcreate'), "current DB equal to savepoint");
+
+#      $shredder->PutObjects( Objects => $group );
+#      $shredder->WipeoutAll;
+#      cmp_deeply( dump_current_and_savepoint('clean'), "current DB equal to savepoint");
+}