[Catalyst-commits] r8343 -
Catalyst-Runtime/5.80/branches/Catalyst-Test-Updates/lib/Catalyst
marcus at dev.catalyst.perl.org
marcus at dev.catalyst.perl.org
Wed Sep 3 09:59:04 BST 2008
Author: marcus
Date: 2008-09-03 09:59:03 +0100 (Wed, 03 Sep 2008)
New Revision: 8343
Modified:
Catalyst-Runtime/5.80/branches/Catalyst-Test-Updates/lib/Catalyst/Test.pm
Log:
Add new test features
Modified: Catalyst-Runtime/5.80/branches/Catalyst-Test-Updates/lib/Catalyst/Test.pm
===================================================================
--- Catalyst-Runtime/5.80/branches/Catalyst-Test-Updates/lib/Catalyst/Test.pm 2008-09-03 08:58:53 UTC (rev 8342)
+++ Catalyst-Runtime/5.80/branches/Catalyst-Test-Updates/lib/Catalyst/Test.pm 2008-09-03 08:59:03 UTC (rev 8343)
@@ -1,5 +1,7 @@
package Catalyst::Test;
+use Test::More;
+
use strict;
use warnings;
@@ -7,6 +9,10 @@
use Catalyst::Utils;
use Class::Inspector;
+use parent qw/Exporter/;
+our @EXPORT=qw/&content_like &action_ok &action_redirect &action_notfound &contenttype_is/;
+
+
=head1 NAME
Catalyst::Test - Test Catalyst Applications
@@ -44,8 +50,8 @@
package main;
+ use Catalyst::Test 'TestApp';
use Test::More tests => 1;
- use Catalyst::Test 'TestApp';
ok( get('/foo') =~ /bar/ );
@@ -54,7 +60,8 @@
This module allows you to make requests to a Catalyst application either without
a server, by simulating the environment of an HTTP request using
L<HTTP::Request::AsCGI> or remotely if you define the CATALYST_SERVER
-environment variable.
+environment variable. This module also adds a few catalyst
+specific testing methods as displayed in the method section.
The </get> and </request> functions take either a URI or an L<HTTP::Request>
object.
@@ -112,6 +119,7 @@
my $caller = caller(0);
*{"$caller\::request"} = $request;
*{"$caller\::get"} = $get;
+ __PACKAGE__->export_to_level(1);
}
=head2 local_request
@@ -195,6 +203,72 @@
return $agent->request($request);
}
+=head2 action_ok
+
+Fetches the given url and check that the request was successful
+
+=head2 action_redirect
+
+Fetches the given url and check that the request was a redirect
+
+=head2 action_notfound
+
+Fetches the given url and check that the request was not found
+
+=head2 content_like
+
+Fetches the given url and matches the content against it.
+
+=head2 contenttype_is
+
+Check for given mime type
+
+=cut
+
+sub content_like {
+ my $caller=caller(0);
+ no strict 'refs';
+ my $get=*{"$caller\::get"};
+ my $action=shift;
+ return Test::More->builder->like(get($action), at _);
+}
+
+sub action_ok {
+ my $caller=caller(0);
+ no strict 'refs';
+ my $request=*{"$caller\::request"};
+ my $action=shift;
+ return Test::More->builder->ok(&$request($action)->is_success, @_);
+}
+
+sub action_redirect {
+ my $caller=caller(0);
+ no strict 'refs';
+ my $request=*{"$caller\::request"};
+ my $action=shift;
+ return Test::More->builder->ok(&$request($action)->is_redirect, at _);
+
+}
+
+sub action_notfound {
+ my $caller=caller(0);
+ no strict 'refs';
+ my $request=*{"$caller\::request"};
+ my $action=shift;
+ return Test::More->builder->is_eq(&$request($action)->code,404, at _);
+
+}
+
+
+sub contenttype_is {
+ my $caller=caller(0);
+ no strict 'refs';
+ my $request=*{"$caller\::request"};
+ my $action=shift;
+ my $res=&$request($action);
+ return Test::More->builder->is_eq(scalar($res->content_type), at _);
+}
+
=head1 SEE ALSO
L<Catalyst>, L<Test::WWW::Mechanize::Catalyst>,
More information about the Catalyst-commits
mailing list