X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flib%2FTestApp%2FController%2FAction%2FChained.pm;h=18804afb9e38ab16522178e2ec5668f115218a56;hb=b7ce908fc5c404dcbc480c7ecf9a275b92fcc26f;hp=01fb36371ac5b77f5bb430e380e5c45caeb3c5ee;hpb=0e853a7f4605694b878de5509c7aeddd2bdfb5db;p=catagits%2FCatalyst-Runtime.git diff --git a/t/lib/TestApp/Controller/Action/Chained.pm b/t/lib/TestApp/Controller/Action/Chained.pm index 01fb363..18804af 100644 --- a/t/lib/TestApp/Controller/Action/Chained.pm +++ b/t/lib/TestApp/Controller/Action/Chained.pm @@ -15,26 +15,26 @@ sub begin :Private { } # # Simple parent/child action test # -sub foo :PathPart('chained/foo') :Captures(1) :Chained('/') { } +sub foo :PathPart('chained/foo') :CaptureArgs(1) :Chained('/') { } sub endpoint :PathPart('end') :Chained('/action/chained/foo') :Args(1) { } # # Parent/child test with two args each # -sub foo2 :PathPart('chained/foo2') :Captures(2) :Chained('/') { } +sub foo2 :PathPart('chained/foo2') :CaptureArgs(2) :Chained('/') { } sub endpoint2 :PathPart('end2') :Chained('/action/chained/foo2') :Args(2) { } # # Relative specification of parent action # -sub bar :PathPart('chained/bar') :Chained('/') :Captures(0) { } +sub bar :PathPart('chained/bar') :Chained('/') :CaptureArgs(0) { } sub finale :PathPart('') :Chained('bar') :Args { } # # three chain with concurrent endpoints # -sub one :PathPart('chained/one') :Chained('/') :Captures(1) { } -sub two :PathPart('two') :Chained('/action/chained/one') :Captures(2) { } +sub one :PathPart('chained/one') :Chained('/') :CaptureArgs(1) { } +sub two :PathPart('two') :Chained('/action/chained/one') :CaptureArgs(2) { } sub three_end :PathPart('three') :Chained('two') :Args(3) { } sub one_end :PathPart('chained/one') :Chained('/') :Args(1) { } sub two_end :PathPart('two') :Chained('one') :Args(2) { } @@ -53,14 +53,14 @@ sub higher_root :PathPart('bar') :Chained('/action/chained/foo/higher_root') :Ar # # Controller -> subcontroller -> controller # -sub pcp1 :PathPart('chained/pcp1') :Chained('/') :Captures(1) { } +sub pcp1 :PathPart('chained/pcp1') :Chained('/') :CaptureArgs(1) { } sub pcp3 :Chained('/action/chained/foo/pcp2') :Args(1) { } # # Dispatch on capture number # -sub multi_cap1 :PathPart('chained/multi_cap') :Chained('/') :Captures(1) { } -sub multi_cap2 :PathPart('chained/multi_cap') :Chained('/') :Captures(2) { } +sub multi_cap1 :PathPart('chained/multi_cap') :Chained('/') :CaptureArgs(1) { } +sub multi_cap2 :PathPart('chained/multi_cap') :Chained('/') :CaptureArgs(2) { } sub multi_cap_end1 :PathPart('baz') :Chained('multi_cap1') :Args(0) { } sub multi_cap_end2 :PathPart('baz') :Chained('multi_cap2') :Args(0) { } @@ -68,17 +68,26 @@ sub multi_cap_end2 :PathPart('baz') :Chained('multi_cap2') :Args(0) { } # Priority: Slurpy args vs. chained actions # sub priority_a1 :PathPart('chained/priority_a') :Chained('/') :Args { } -sub priority_a2 :PathPart('chained/priority_a') :Chained('/') :Captures(1) { } +sub priority_a2 :PathPart('chained/priority_a') :Chained('/') :CaptureArgs(1) { } sub priority_a2_end :PathPart('end') :Chained('priority_a2') :Args(1) { } + # # Priority: Fixed args vs. chained actions # sub priority_b1 :PathPart('chained/priority_b') :Chained('/') :Args(3) { } -sub priority_b2 :PathPart('chained/priority_b') :Chained('/') :Captures(1) { } +sub priority_b2 :PathPart('chained/priority_b') :Chained('/') :CaptureArgs(1) { } sub priority_b2_end :PathPart('end') :Chained('priority_b2') :Args(1) { } # +# Priority: With no Args() +# +sub priority_c1 :PathPart('chained/priority_c') :Chained('/') :CaptureArgs(1) { } +sub priority_c2 :PathPart('') :Chained('priority_c1') { } +sub priority_c2_xyz :PathPart('xyz') :Chained('priority_c1') { } + + +# # Optional specification of :Args in endpoint # sub opt_args :PathPart('chained/opt_args') :Chained('/') { } @@ -86,13 +95,13 @@ sub opt_args :PathPart('chained/opt_args') :Chained('/') { } # # Optional PathPart test -> /chained/optpp/*/opt_pathpart/* # -sub opt_pp_start :Chained('/') :PathPart('chained/optpp') :Captures(1) { } +sub opt_pp_start :Chained('/') :PathPart('chained/optpp') :CaptureArgs(1) { } sub opt_pathpart :Chained('opt_pp_start') :Args(1) { } # # Optional Args *and* PathPart -> /chained/optall/*/oa/... # -sub opt_all_start :Chained('/') :PathPart('chained/optall') :Captures(1) { } +sub opt_all_start :Chained('/') :PathPart('chained/optall') :CaptureArgs(1) { } sub oa :Chained('opt_all_start') { } # @@ -104,7 +113,33 @@ sub rootdef :Chained :PathPart('chained/rootdef') :Args(1) { } # the ParentChain controller chains to this action by # specifying :Chained('.') # -sub parentchain :Chained('/') :PathPart('chained/parentchain') :Captures(1) { } +sub parentchain :Chained('/') :PathPart('chained/parentchain') :CaptureArgs(1) { } + +# +# This is just for a test that a loose end is not callable +# +sub loose :Chained :PathPart('chained/loose') CaptureArgs(1) { } + +# +# Forwarding out of the middle of a chain. +# +sub chain_fw_a :Chained :PathPart('chained/chain_fw') :CaptureArgs(1) { + $_[1]->forward( '/action/chained/fw_dt_target' ); +} +sub chain_fw_b :Chained('chain_fw_a') :PathPart('end') :Args(1) { } + +# +# Detaching out of the middle of a chain. +# +sub chain_dt_a :Chained :PathPart('chained/chain_dt') :CaptureArgs(1) { + $_[1]->detach( '/action/chained/fw_dt_target' ); +} +sub chain_dt_b :Chained('chain_dt_a') :PathPart('end') :Args(1) { } + +# +# Target for former forward and chain tests. +# +sub fw_dt_target :Private { } sub end :Private { my ($self, $c) = @_;