#!/usr/bin/perl use strict; use warnings; use Test::More; BEGIN { plan skip_all => "This test requires YAML to be installed" unless eval { require YAML }; plan tests => 10; } use File::Spec; use ok "Class::Workflow::YAML"; my $y = Class::Workflow::YAML->new; isa_ok( $y, "Class::Workflow::YAML" ); can_ok( $y, "load_file" ); my $workflow = $y->load_file( File::Spec->catfile(qw/examples example.yaml/) ); isa_ok( $workflow, "Class::Workflow" ); isa_ok( $workflow->get_state("open"), "Class::Workflow::State::Simple", "open state" ); is( $workflow->initial_state, "new", "initial state" ); isa_ok( my $accept = $workflow->get_transition("accept"), "Class::Workflow::Transition::Simple" ); my $sub = $accept->body; ok( $sub, "accept transition has a body" ); is( ref($sub), "CODE", "it's a sub" ); { package MockCxt; sub user { "foo" } } my $c = bless {}, "MockCxt"; is_deeply( [ $accept->$sub( $workflow->new_instance, $c ) ], [ { owner => "foo" } ], "body loaded OK from YAML", );