use strict;
use warnings;

BEGIN {require  't/lifecycles/utils.pl'};

is_deeply( [ RT::Lifecycle->ListAll ], [qw/ approvals default delivery /],
       "Get the list of all lifecycles (implicitly for for tickets)");
is_deeply( [ RT::Lifecycle->ListAll('ticket') ],  [qw/ approvals default delivery /],
       "Get the list of all lifecycles for tickets");
is_deeply( [ RT::Lifecycle->List], [qw/ default delivery /],
       "Get the list of lifecycles without approvals (implicitly for for tickets)");
is_deeply( [ RT::Lifecycle->List('ticket') ],  [qw/ default delivery /],
       "Get the list of lifecycles without approvals for tickets");
is_deeply( [ RT::Lifecycle->List('racecar') ], [qw/ racing /],
       "Get the list of lifecycles for other types");

my $tickets = RT::Lifecycle->Load( Name => '', Type => 'ticket' );
ok($tickets, "Got a generalized lifecycle for tickets");
isa_ok( $tickets, "RT::Lifecycle::Ticket", "Is the right subclass" );
is_deeply( [ sort $tickets->Valid ],
           [ sort qw(new open stalled resolved rejected deleted ordered),
             'on way', 'delayed', 'delivered' ],
           "Only gets ticket statuses" );


my $racecars = RT::Lifecycle->Load( Name => '', Type => 'racecar' );
ok($racecars, "Got a generalized lifecycle for racecars");
isa_ok( $racecars, "RT::Lifecycle", "Is the generalized subclass" );
is_deeply( [ sort $racecars->Valid ],
           [ sort ('on-your-mark', 'get-set', 'go', 'first', 'second', 'third', 'no-place') ],
           "Only gets racecar statuses" );

done_testing;
