RT 4.0.22
[freeside.git] / rt / t / api / transaction.t
diff --git a/rt/t/api/transaction.t b/rt/t/api/transaction.t
new file mode 100644 (file)
index 0000000..22c3cfe
--- /dev/null
@@ -0,0 +1,52 @@
+
+use strict;
+use warnings;
+use RT;
+use RT::Test tests => undef;
+use Test::Warn;
+
+use_ok ('RT::Transaction');
+
+{
+    my $u = RT::User->new(RT->SystemUser);
+    $u->Load("root");
+    ok ($u->Id, "Found the root user");
+    ok(my $t = RT::Ticket->new(RT->SystemUser));
+    my ($id, $msg) = $t->Create( Queue => 'General',
+                                    Subject => 'Testing',
+                                    Owner => $u->Id
+                               );
+    ok($id, "Create new ticket $id");
+    isnt($id , 0);
+
+    my $txn = RT::Transaction->new(RT->SystemUser);
+    my ($txn_id, $txn_msg) = $txn->Create(
+                  Type => 'AddLink',
+                  Field => 'RefersTo',
+                  Ticket => $id,
+                  NewValue => 'ticket 42', );
+    ok( $txn_id, "Created transaction $txn_id: $txn_msg");
+
+    my $brief;
+    warning_like { $brief = $txn->BriefDescription }
+                  qr/Could not determine a URI scheme/,
+                    "Caught URI warning";
+
+    is( $brief, 'Reference to ticket 42 added', "Got string description: $brief");
+
+    $txn = RT::Transaction->new(RT->SystemUser);
+    ($txn_id, $txn_msg) = $txn->Create(
+                  Type => 'DeleteLink',
+                  Field => 'RefersTo',
+                  Ticket => $id,
+                  OldValue => 'ticket 42', );
+    ok( $txn_id, "Created transaction $txn_id: $txn_msg");
+
+    warning_like { $brief = $txn->BriefDescription }
+                  qr/Could not determine a URI scheme/,
+                    "Caught URI warning";
+
+    is( $brief, 'Reference to ticket 42 deleted', "Got string description: $brief");
+}
+
+done_testing;