'Plus is not encoded'
);
+is(
+ Catalyst::uri_for( 'TestApp', '/bar/baz' )->as_string,
+ '/bar/baz',
+ 'URI for absolute path, called with only class name'
+);
+
+## relative action (or path) doesn't make sense when calling as class method
+# is(
+# Catalyst::uri_for( 'TestApp', 'bar/baz' )->as_string,
+# '/yada/bar/baz',
+# 'URI for relative path, called with only class name'
+# );
+
+is(
+ Catalyst::uri_for( 'TestApp', '/', 'arg1', 'arg2' )->as_string,
+ '/arg1/arg2',
+ 'URI for root action with args, called with only class name'
+);
+
+## relative action (or path) doesn't make sense when calling as class method
+# is( Catalyst::uri_for( 'TestApp', '../quux' )->as_string,
+# '/quux', 'URI for relative dot path, called with only class name' );
+
+is(
+ Catalyst::uri_for( 'TestApp', '/quux', { param1 => 'value1' } )->as_string,
+ '/quux?param1=value1',
+ 'URI for quux action with query params, called with only class name'
+);
+
+is (Catalyst::uri_for( 'TestApp', '/bar/wibble?' )->as_string,
+ '/bar/wibble%3F', 'Question Mark gets encoded, called with only class name'
+);
+
+## relative action (or path) doesn't make sense when calling as class method
+# is( Catalyst::uri_for( 'TestApp', qw/bar wibble?/, 'with space' )->as_string,
+# '/yada/bar/wibble%3F/with%20space', 'Space gets encoded, called with only class name'
+# );
+
+is(
+ Catalyst::uri_for( 'TestApp', '/bar', 'with+plus', { 'also' => 'with+plus' })->as_string,
+ '/bar/with+plus?also=with%2Bplus',
+ 'Plus is not encoded, called with only class name'
+);
+
TODO: {
local $TODO = 'broken by 5.7008';
is(
namespace => 'yada',
} );
+
+
+
+# this works, using $ctx
+is($context->uri_for( 'TestApp', $context->controller('Action::Chained')->action_for('endpoint')),
+ "http://127.0.0.1/foo/yada/chained/foo/end",
+ "uri_for a controller and action");
+
+# this fails, uri_for returns undef, why isn't this one working??
+is( $context->uri_for_action( '/action/chained/endpoint' ),
+ 'http://127.0.0.1/chained/foo/end',
+ "uri_for a controller and action as string");
+
+# this fails, uri_for returns undef
+is(Catalyst::uri_for_action( 'TestApp', $context->controller('Action::Chained')->action_for('endpoint')),
+ "/chained/foo/end",
+ "uri_for a controller and action, called with only class name");
+
+# this fails, uri_for returns undef
+is(Catalyst::uri_for_action( 'TestApp', '/action/chained/endpoint' ),
+ "/chained/foo/end",
+ "uri_for a controller and action as string, called with only class name");
+
+# this fails, uri_for returns undef
+is(Catalyst::uri_for_action( 'TestApp', $chained_action),
+ "/chained/foo/end",
+ "uri_for action via dispatcher, called with only class name");
+
+
+
is($context->uri_for($context->controller('Action')),
"http://127.0.0.1/foo/yada/action/",
"uri_for a controller");