fix ticketing system error on bootstrap of new install
[freeside.git] / rt / t / ticket / time-worked.t
1 use strict;
2 use warnings;
3
4 use RT::Test tests => 27;
5
6 my $queue = RT::Test->load_or_create_queue( Name => 'General' );
7 ok $queue && $queue->id, "loaded or created a queue";
8
9 note 'set on Create';
10 {
11     my $ticket = RT::Test->create_ticket(
12         Queue => $queue->id, TimeWorked => 10,
13     );
14     is $ticket->TimeWorked, 10, 'correct value';
15
16     my $txn = RT::Transaction->new( RT->SystemUser );
17     $txn->LoadByCols(
18         ObjectType => 'RT::Ticket', ObjectId => $ticket->id,
19         Type => 'Create',
20     );
21     ok $txn->id, 'found transaction';
22     is $txn->TimeTaken, 10, 'correct value';
23 }
24
25 note 'set on Comment';
26 {
27     my $ticket = RT::Test->create_ticket( Queue => $queue->id );
28     ok !$ticket->TimeWorked, 'correct value';
29     $ticket->Comment( Content => 'test', TimeTaken => 10 );
30     is $ticket->TimeWorked, 10, 'correct value';
31
32     my $txn = RT::Transaction->new( RT->SystemUser );
33     $txn->LoadByCols(
34         ObjectType => 'RT::Ticket', ObjectId => $ticket->id,
35         Type => 'Comment',
36     );
37     ok $txn->id, 'found transaction';
38     is $txn->TimeTaken, 10, 'correct value';
39 }
40
41 note 'update';
42 {
43     my $ticket = RT::Test->create_ticket( Queue => $queue->id );
44     ok !$ticket->TimeWorked, 'correct value';
45     $ticket->SetTimeWorked( 10 );
46     is $ticket->TimeWorked, 10, 'correct value';
47
48     my $txn = RT::Transaction->new( RT->SystemUser );
49     $txn->LoadByCols(
50         ObjectType => 'RT::Ticket', ObjectId => $ticket->id,
51         Type => 'Set', Field => 'TimeWorked',
52     );
53     ok $txn->id, 'found transaction';
54     is $txn->TimeTaken, 10, 'correct value';
55 }
56
57 note 'on Merge';
58 {
59     my $ticket = RT::Test->create_ticket(
60         Queue => $queue->id, TimeWorked => 7,
61     );
62     {
63         my $tmp = RT::Test->create_ticket(
64             Queue => $queue->id, TimeWorked => 13,
65         );
66         my ($status, $msg) = $tmp->MergeInto( $ticket->id );
67         ok $status, "merged tickets";
68     }
69     $ticket->Load( $ticket->id );
70     is $ticket->TimeWorked, 20, 'correct value';
71 }
72
73 sub dump_txns {
74     my $ticket = shift;
75     my $txns = $ticket->Transactions;
76     while ( my $txn = $txns->Next ) {
77         diag sprintf "#%d\t%s\t%s\t%d", map $txn->$_() // '', qw(id Type Field TimeTaken);
78     }
79 }
80