From: Ash Berlin Date: Tue, 17 Feb 2009 22:29:19 +0000 (+0000) Subject: TWMC: Doc patch and useragent patch from rT X-Git-Tag: 0.51~6 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FTest-WWW-Mechanize-Catalyst.git;a=commitdiff_plain;h=d6fc3a22e3ac5404cbf4bebfae7dab3e8073ad01 TWMC: Doc patch and useragent patch from rT --- diff --git a/CHANGES b/CHANGES index 3826ad4..b65c670 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,8 @@ Revision history for Perl module Test::WWW::Mechanize::Catalyst: + - Doc updates from Jester + - User agent fixes from ANDREMAR + 0.50 Tue Feb 17 09:12 GMT 2009 - Remove warning in HTTP::Cookies - Call BUILDALL diff --git a/lib/Test/WWW/Mechanize/Catalyst.pm b/lib/Test/WWW/Mechanize/Catalyst.pm index e9e91c6..866a09f 100644 --- a/lib/Test/WWW/Mechanize/Catalyst.pm +++ b/lib/Test/WWW/Mechanize/Catalyst.pm @@ -10,7 +10,7 @@ use Test::WWW::Mechanize; extends 'Test::WWW::Mechanize', 'Moose::Object'; -use namespace::clean -execept => 'meta'; +#use namespace::clean -execept => 'meta'; our $VERSION = '0.50'; our $APP_CLASS; @@ -135,6 +135,7 @@ sub _do_catalyst_request { $uri->scheme('http') unless defined $uri->scheme; $uri->host('localhost') unless defined $uri->host; + $request = $self->prepare_request($request); $self->cookie_jar->add_cookie_header($request) if $self->cookie_jar; # Woe betide anyone who unsets CATALYST_SERVER @@ -207,16 +208,16 @@ Test::WWW::Mechanize::Catalyst - Test::WWW::Mechanize for Catalyst =head1 DESCRIPTION -L is an elegant MVC Web Application -Framework. L is a subclass of L that -incorporates features for web application testing. The -L module meshes the two to allow easy -testing of L applications without starting up a web server. +L is an elegant MVC Web Application Framework. +L is a subclass of L that incorporates +features for web application testing. The L +module meshes the two to allow easy testing of L applications without +needing to starting up a web server. Testing web applications has always been a bit tricky, normally -starting a web server for your application and making real HTTP +requiring starting a web server for your application and making real HTTP requests to it. This module allows you to test L web -applications but does not start a server or issue HTTP +applications but does not require a server or issue HTTP requests. Instead, it passes the HTTP request object directly to L. Thus you do not need to use a real hostname: "http://localhost/" will do. However, this is optional. The following @@ -229,16 +230,23 @@ Links which do not begin with / or are not for localhost can be handled as normal Web requests - this is handy if you have an external single sign-on system. You must set allow_external to true for this: - $m->allow_external(1); + $mech->allow_external(1); You can also test a remote server by setting the environment variable -CATALYST_SERVER, for example: +CATALYST_SERVER; for example: $ CATALYST_SERVER=http://example.com/myapp prove -l t will run the same tests on the application running at http://example.com/myapp regardless of whether or not you specify http:://localhost for Test::WWW::Mechanize::Catalyst. + +Furthermore, if you set CATALYST_SERVER, the server will be regarded +as a remote server even if your links point to localhost. Thus, you +can use Test::WWW::Mechanize::Catalyst to test your live webserver +running on your local machine, if you need to test aspects of your +deployment environment (for example, configuration options in an +http.conf file) instead of just the Catalyst request handling. This makes testing fast and easy. L provides functions for common web testing scenarios. For example: @@ -258,7 +266,7 @@ screen. By default this module will treat responses which are the debug screen as failures. If you actually want to test debug screens, please use: - $m->{catalyst_debug} = 1; + $mmech->{catalyst_debug} = 1; An alternative to this module is L. @@ -266,7 +274,7 @@ An alternative to this module is L. =head2 new -Behaves like, and calls, L's C method. Any parms +Behaves like, and calls, L's C method. Any params passed in get passed to WWW::Mechanize's constructor. Note that we need to pass the name of the Catalyst application to the "use": @@ -321,7 +329,7 @@ Tells if the title of the page matches the given regex. =head2 $mech->title_unlike( $regex [, $desc ] ) -Tells if the title of the page matches the given regex. +Tells if the title of the page does NOT match the given regex. $mech->title_unlike( qr/Invoices for (.+)/ @@ -431,8 +439,8 @@ Makes a C call and executes tests on the results. The link must be found, and then followed successfully. Otherwise, this test fails. -I<%parms> is a hashref containing the parms to pass to C. -Note that the parms to C are a hash whereas the parms to +I<%parms> is a hashref containing the params to pass to C. +Note that the params to C are a hash whereas the parms to this function are a hashref. You have to call this function like: $agent->follow_like_ok( {n=>3}, "looking for 3rd link" ); diff --git a/t/lib/Catty.pm b/t/lib/Catty.pm index f9285d0..c67429a 100644 --- a/t/lib/Catty.pm +++ b/t/lib/Catty.pm @@ -127,5 +127,14 @@ sub gzipped : Global { $c->response->headers->push_header( 'Vary', 'Accept-Encoding' ); } +sub user_agent : Global { + my ( $self, $c ) = @_; + + my $html = html($c->req->user_agent, $c->req->user_agent); + $c->response->content_type("text/html; charset=utf-8"); + $c->response->output( $html ); + +} + 1; diff --git a/t/multi_content_type.t b/t/multi_content_type.t index 081a47e..af30861 100644 --- a/t/multi_content_type.t +++ b/t/multi_content_type.t @@ -52,7 +52,7 @@ SKIP: { } END { - if ( $pid && $pid > 0 ) { + if ( $pid && $pid != 0 ) { kill 9, $pid; } } diff --git a/t/useragent.t b/t/useragent.t new file mode 100644 index 0000000..02b311b --- /dev/null +++ b/t/useragent.t @@ -0,0 +1,15 @@ +#!perl -T +use strict; +use warnings; +use lib 'lib'; +use Encode qw(); +use Test::More tests => 2; +use lib 't/lib'; +use Test::WWW::Mechanize::Catalyst 'Catty'; + +my $root = "http://localhost"; +my $agent = 'TestAgent/1.0'; +my $m = Test::WWW::Mechanize::Catalyst->new(agent => $agent); + +$m->get_ok("$root/user_agent"); +$m->title_is($agent, "title is correct: $agent");