X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FTest%2FWWW%2FMechanize%2FCatalyst.pm;h=74e4758b950f250d3eb6c5920b9b4bd80e49f5f4;hb=f21ad4062cdd3485f59635926fa031feef7eff8e;hp=da48764c95844fbf9a927dcbd8a299d4f06d44d7;hpb=2d40faefc0e5f1b79b76275e90a3e630e588e785;p=catagits%2FTest-WWW-Mechanize-Catalyst.git diff --git a/lib/Test/WWW/Mechanize/Catalyst.pm b/lib/Test/WWW/Mechanize/Catalyst.pm index da48764..74e4758 100644 --- a/lib/Test/WWW/Mechanize/Catalyst.pm +++ b/lib/Test/WWW/Mechanize/Catalyst.pm @@ -1,20 +1,46 @@ package Test::WWW::Mechanize::Catalyst; -use strict; -use warnings; + +use Moose; + +use Carp qw/croak/; +require Catalyst::Test; # Do not call import use Encode qw(); use HTML::Entities; use Test::WWW::Mechanize; -use base qw(Test::WWW::Mechanize); + +extends 'Test::WWW::Mechanize', 'Moose::Object'; + +use namespace::clean -execept => 'meta'; + our $VERSION = '0.45'; +our $APP_CLASS; my $Test = Test::Builder->new(); -# the reason for the auxiliary package is that both WWW::Mechanize and -# Catalyst::Test have a subroutine named 'request' +has catalyst_app => ( + is => 'ro', + required => 1, + default => sub { $APP_CLASS }, +); + +has allow_external => ( + is => 'rw', + isa => 'Bool', + default => 0 +); + +sub new { + my $class = shift; -sub allow_external { - my ( $self, $value ) = @_; - return $self->{allow_external} unless defined $value; - $self->{allow_external} = $value; + my $obj = $class->SUPER::new(@_); + my $self = $class->meta->new_object( + __INSTANCE__ => $obj, + @_ + ); + + Class::MOP::load_class($self->catalyst_app) + unless (Class::MOP::is_class_loaded($self->catalyst_app)); + + return $self; } sub _make_request { @@ -37,7 +63,7 @@ sub _make_request { my @creds = $self->get_basic_credentials( "Basic", $uri ); $request->authorization_basic( @creds ) if @creds; - my $response = Test::WWW::Mechanize::Catalyst::Aux::request($request); + my $response = Catalyst::Test::local_request($self->{catalyst_app}, $request); $response->header( 'Content-Base', $request->uri ); $response->request($request); if ( $request->uri->as_string =~ m{^/} ) { @@ -92,20 +118,17 @@ sub _make_request { } sub import { - Test::WWW::Mechanize::Catalyst::Aux::import(@_); -} + my ($class, $app) = @_; -package Test::WWW::Mechanize::Catalyst::Aux; + if (defined $app) { + Class::MOP::load_class($app) + unless (Class::MOP::is_class_loaded($app)); + $APP_CLASS = $app; + } -sub import { - my ( $class, @args ) = @_; - eval { - require Catalyst::Test; - Catalyst::Test::import(@_); - }; - warn $@ if $@; } + 1; __END__ @@ -356,11 +379,13 @@ L, L. =head1 AUTHOR -Leon Brocard, C<< >> +Ash Berlin C<< >> (current maintiner) + +Original Author: Leon Brocard, C<< >> =head1 COPYRIGHT -Copyright (C) 2005-7, Leon Brocard +Copyright (C) 2005-8, Leon Brocard =head1 LICENSE