#!perl
'new'
,
'to_form'
,
'from_form'
,
'rt_type'
,
'comment'
,
'correspond'
,
'attachments'
,
'transactions'
,
'take'
,
'untake'
,
'steal'
,
'id'
,
'queue'
,
'owner'
,
'creator'
,
'subject'
,
'status'
,
'priority'
,
'initial_priority'
,
'final_priority'
,
'requestors'
,
'cc'
,
'admin_cc'
,
'created'
,
'starts'
,
'started'
,
'due'
,
'resolved'
,
'told'
,
'time_estimated'
,
'time_worked'
,
'time_left'
,
'last_updated'
,
'sla'
,
);
BEGIN {
use_ok(
'RT::Client::REST::Ticket'
);
}
my
$ticket
;
lives_ok {
$ticket
= RT::Client::REST::Ticket->new;
}
'Ticket can get successfully created'
;
for
my
$method
(METHODS) {
can_ok(
$ticket
,
$method
);
}
for
my
$method
(
qw(comment correspond)
) {
my
$ticket
= RT::Client::REST::Ticket->new;
throws_ok {
$ticket
->
$method
(1);
}
'RT::Client::REST::Exception'
;
throws_ok {
$ticket
->
$method
(1);
}
'RT::Client::REST::Object::OddNumberOfArgumentsException'
;
throws_ok {
$ticket
->
$method
;
}
'RT::Client::REST::Object::RequiredAttributeUnsetException'
,
"won't go on without RT object"
;
throws_ok {
$ticket
->rt(
'anc'
);
}
'RT::Client::REST::Object::InvalidValueException'
,
"'rt' expects an actual RT object"
;
lives_ok {
$ticket
->rt( RT::Client::REST->new );
}
"RT object successfully set"
;
throws_ok {
$ticket
->
$method
;
}
'RT::Client::REST::Object::RequiredAttributeUnsetException'
,
"won't go on without 'id' attribute"
;
lives_ok {
$ticket
->id(1);
}
"'id' successfully set to a numeric value"
;
throws_ok {
$ticket
->
$method
;
}
'RT::Client::REST::Object::InvalidValueException'
;
lives_ok {
$ticket
->id(1);
}
"'id' successfully set to a numeric value"
;
throws_ok {
$ticket
->
$method
;
}
'RT::Client::REST::Object::InvalidValueException'
,
"Need 'message' to $method"
;
throws_ok {
$ticket
->
$method
(
message
=>
'abc'
);
}
'RT::Client::REST::RequiredAttributeUnsetException'
;
throws_ok {
$ticket
->
$method
(
message
=>
'abc'
,
attachments
=> [
'- this file does not exist -'
],
);
}
'RT::Client::REST::CannotReadAttachmentException'
;
}
for
my
$method
(
qw(attachments transactions)
) {
my
$ticket
= RT::Client::REST::Ticket->new;
throws_ok {
$ticket
->
$method
;
}
'RT::Client::REST::Object::RequiredAttributeUnsetException'
,
"won't go on without RT object"
;
throws_ok {
$ticket
->rt(
'anc'
);
}
'RT::Client::REST::Object::InvalidValueException'
,
"'rt' expects an actual RT object"
;
lives_ok {
$ticket
->rt( RT::Client::REST->new );
}
"RT object successfully set"
;
throws_ok {
$ticket
->
$method
;
}
'RT::Client::REST::Object::RequiredAttributeUnsetException'
,
"won't go on without 'id' attribute"
;
lives_ok {
$ticket
->id(1);
}
"'id' successfully set to a numeric value"
;
throws_ok {
$ticket
->
$method
;
}
'RT::Client::REST::RequiredAttributeUnsetException'
;
}
for
my
$method
(
qw(take untake steal)
) {
my
$ticket
= RT::Client::REST::Ticket->new;
throws_ok {
$ticket
->
$method
;
}
'RT::Client::REST::Object::RequiredAttributeUnsetException'
,
"won't go on without RT object"
;
throws_ok {
$ticket
->rt(
'anc'
);
}
'RT::Client::REST::Object::InvalidValueException'
,
"'rt' expects an actual RT object"
;
lives_ok {
$ticket
->rt( RT::Client::REST->new );
}
"RT object successfully set"
;
throws_ok {
$ticket
->
$method
;
}
'RT::Client::REST::Object::RequiredAttributeUnsetException'
,
"won't go on without 'id' attribute"
;
lives_ok {
$ticket
->id(1);
}
"'id' successfully set to a numeric value"
;
throws_ok {
$ticket
->
$method
;
}
'RT::Client::REST::RequiredAttributeUnsetException'
;
}
throws_ok {
$ticket
->requestors(
undef
);
}
'RT::Client::REST::Object::InvalidValueException'
,
'List attributes (requestors) only accept array reference'
;
my
@emails
=
qw(dmitri@localhost dude@localhost)
;
throws_ok {
$ticket
->requestors(
@emails
);
}
'RT::Client::REST::Object::InvalidValueException'
,
'List attributes (requestors) only accept array reference'
;
lives_ok {
$ticket
->requestors( [] );
}
'Set requestors to empty values'
;
ok( 0 ==
$ticket
->requestors,
'There are 0 requestors'
);
lives_ok {
$ticket
->requestors( \
@emails
);
}
'Set requestors to list of two values'
;
ok( 2 ==
$ticket
->requestors,
'There are 2 requestors'
);
lives_ok {
$ticket
->add_requestors(
qw(xyz@localhost root pgsql)
);
}
'Added three more requestors'
;
ok( 5 ==
$ticket
->requestors,
'There are now 5 requestors'
);
lives_ok {
$ticket
->delete_requestors(
'root'
);
}
'Deleted a requestor (root)'
;
ok( 4 ==
$ticket
->requestors,
'There are now 4 requestors'
);
ok(
'ticket'
eq
$ticket
->rt_type );
$ticket
->due(
'Thu Jan 12 11:14:31 2012'
);
my
$dt
=
$ticket
->due_datetime();
is(
$dt
->year, 2012 );
is(
$dt
->month, 1 );
is(
$dt
->day, 12 );
is(
$dt
->hour, 11 );
is(
$dt
->minute, 14 );
is(
$dt
->second, 31 );
is(
$dt
->time_zone->name,
'UTC'
);
$dt
= DateTime->new(
year
=> 1983,
month
=> 9,
day
=> 1,
hour
=> 1,
minute
=> 2,
second
=> 3,
time_zone
=>
'EST'
);
$dt
=
$ticket
->due_datetime(
$dt
);
is(
$dt
->year, 1983 );
is(
$dt
->month, 9 );
is(
$dt
->day, 1 );
is(
$dt
->hour, 6 );
is(
$dt
->minute, 2 );
is(
$dt
->second, 3 );
is(
$dt
->time_zone->name,
'UTC'
);
is(
$ticket
->due,
'Thu Sep 01 01:02:03 1983'
);
throws_ok {
$ticket
->due_datetime(
bless
{},
'foo'
);
}
'RT::Client::REST::Object::InvalidValueException'
;