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 {
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{^/} ) {
}
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__
=head1 AUTHOR
-Leon Brocard, C<< <acme@astray.com> >>
+Ash Berlin C<< <ash@cpan.org> >> (current maintiner)
+
+Original Author: Leon Brocard, C<< <acme@astray.com> >>
=head1 COPYRIGHT
-Copyright (C) 2005-7, Leon Brocard
+Copyright (C) 2005-8, Leon Brocard
=head1 LICENSE