package Reaction::Test; use base qw/Test::Class Reaction::Object/; use Reaction::Class; sub simple_mock_context { my ($q_p, $b_p, $path) = ({}, {}, 'test/path'); my $req = bless({ query_parameters => sub { $q_p }, body_parameters => sub { $b_p }, path => sub { shift; $path = shift if @_; $path; }, }, 'Reaction::Test::Mock::Request'); my %res_info = (content_type => '', body => '', status => 200, headers => {}); my $res = bless({ (map { my $key = $_; ($key => sub { shift; $res_info{$key} = shift if @_; $res_info{$key} }); } keys %res_info), header => sub { shift; my $h = shift; $res_info{headers}{$h} = shift if @_; $res_info{headers}{$h}; }, }, 'Reaction::Test::Mock::Response'); return bless({ req => sub { $req }, res => sub { $res }, }, 'Reaction::Test::Mock::Context'); } =head1 NAME Reaction::Test =head1 DESCRIPTION =head1 AUTHORS See L for authors. =head1 LICENSE See L for the license. =cut package Reaction::Test::Mock::Context; sub isa { shift; return 1 if (shift eq 'Catalyst'); } sub view { return $_[0]->{view}->(@_); } sub req { return $_[0]->{req}->(@_); } sub res { return $_[0]->{res}->(@_); } package Reaction::Test::Mock::Request; sub query_parameters { return $_[0]->{query_parameters}->(@_); } sub body_parameters { return $_[0]->{body_parameters}->(@_); } sub path { return $_[0]->{path}->(@_); } package Reaction::Test::Mock::Response; sub body { return $_[0]->{body}->(@_); } sub content_type { return $_[0]->{content_type}->(@_); } sub status { return $_[0]->{status}->(@_); } sub headers { return $_[0]->{headers}->(@_); } sub header { return $_[0]->{header}->(@_); } 1;