finished test cases
John Napiorkowski [Wed, 23 Oct 2013 17:35:36 +0000 (12:35 -0500)]
t/content_negotiation.t
t/lib/TestContentNegotiation/Controller/Root.pm

index df6a3c5..559a370 100644 (file)
@@ -18,14 +18,14 @@ use Catalyst::Test 'TestContentNegotiation';
 
   ok my $res = request $req;
 
-  is $res->content, 'is_json';
+  is $res->content, 'is_json1';
 }
 
 {
   ok my $req = POST '/', [a=>1,b=>2];
   ok my $res = request $req;
 
-  is $res->content, 'is_urlencoded';
+  is $res->content, 'is_urlencoded1';
 }
 
 {
@@ -36,8 +36,95 @@ use Catalyst::Test 'TestContentNegotiation';
 
   ok my $res = request $req;
 
-  is $res->content, 'is_multipart';
+  is $res->content, 'is_multipart1';
 }
 
+{
+  ok my $req = POST '/under',
+     Content_Type => 'application/json',
+     Content => encode_json +{message=>'test'};
+
+  ok my $res = request $req;
+
+  is $res->content, 'is_json2';
+}
+
+{
+  ok my $req = POST '/under', [a=>1,b=>2];
+  ok my $res = request $req;
+
+  is $res->content, 'is_urlencoded2';
+}
+
+{
+  ok my $path = TestContentNegotiation->path_to(qw/share file.txt/);
+  ok my $req = POST '/under',
+    Content_Type => 'form-data',
+    Content =>  [a=>1, b=>2, file=>["$path"]];
+
+  ok my $res = request $req;
+
+  is $res->content, 'is_multipart2';
+}
+
+{
+  ok my $req = POST '/is_more_than_one_1',
+    Content =>  [a=>1, b=>2];
+
+  ok my $res = request $req;
+
+  is $res->content, 'formdata1';
+}
+
+{
+  ok my $req = POST '/is_more_than_one_2',
+    Content =>  [a=>1, b=>2];
+
+  ok my $res = request $req;
+
+  is $res->content, 'formdata2';
+}
+
+{
+  ok my $req = POST '/is_more_than_one_3',
+    Content =>  [a=>1, b=>2];
+
+  ok my $res = request $req;
+
+  is $res->content, 'formdata3';
+}
+
+{
+  ok my $path = TestContentNegotiation->path_to(qw/share file.txt/);
+  ok my $req = POST '/is_more_than_one_1',
+    Content_Type => 'form-data',
+    Content =>  [a=>1, b=>2, file=>["$path"]];
+
+  ok my $res = request $req;
+
+  is $res->content, 'formdata1';
+}
+
+{
+  ok my $path = TestContentNegotiation->path_to(qw/share file.txt/);
+  ok my $req = POST '/is_more_than_one_2',
+    Content_Type => 'form-data',
+    Content =>  [a=>1, b=>2, file=>["$path"]];
+
+  ok my $res = request $req;
+
+  is $res->content, 'formdata2';
+}
+
+{
+  ok my $path = TestContentNegotiation->path_to(qw/share file.txt/);
+  ok my $req = POST '/is_more_than_one_3',
+    Content_Type => 'form-data',
+    Content =>  [a=>1, b=>2, file=>["$path"]];
+
+  ok my $res = request $req;
+
+  is $res->content, 'formdata3';
+}
 
 done_testing;
index ab8e0eb..60fe6f7 100644 (file)
@@ -7,22 +7,22 @@ extends 'Catalyst::Controller';
 
 sub start :Chained(/) PathPrefix CaptureArgs(0) { }
 
-    sub is_json       : Chained('start') PathPart('') Consumes('application/json') Args(0) { pop->res->body('is_json') }
-    sub is_urlencoded : Chained('start') PathPart('') Consumes('application/x-www-form-urlencoded') Args(0) { pop->res->body('is_urlencoded') }
-    sub is_multipart  : Chained('start') PathPart('') Consumes('multipart/form-data') Args(0) { pop->res->body('is_multipart') }
+    sub is_json       : Chained('start') PathPart('') Consumes('application/json') Args(0) { pop->res->body('is_json1') }
+    sub is_urlencoded : Chained('start') PathPart('') Consumes('application/x-www-form-urlencoded') Args(0) { pop->res->body('is_urlencoded1') }
+    sub is_multipart  : Chained('start') PathPart('') Consumes('multipart/form-data') Args(0) { pop->res->body('is_multipart1') }
       
     sub under :Chained('start') CaptureArgs(0) { }
 
-      sub is_json_under       : Chained('under') PathPart('') Consumes(JSON) Args(0) { pop->res->body('is_json') }
-      sub is_urlencoded_under : Chained('under') PathPart('') Consumes(UrlEncoded) Args(0) { pop->res->body('is_urlencoded') }
-      sub is_multipart_under  : Chained('under') PathPart('') Consumes(Multipart) Args(0) { pop->res->body('is_multipart') }
+      sub is_json_under       : Chained('under') PathPart('') Consumes(JSON) Args(0) { pop->res->body('is_json2') }
+      sub is_urlencoded_under : Chained('under') PathPart('') Consumes(UrlEncoded) Args(0) { pop->res->body('is_urlencoded2') }
+      sub is_multipart_under  : Chained('under') PathPart('') Consumes(Multipart) Args(0) { pop->res->body('is_multipart2') }
 
       ## Or allow more than one type
     
-    sub multi :Chained('start') CaptureArgs(0) { }
+    sub multi :Chained('start') PathPart('') CaptureArgs(0) { }
       
     sub is_more_than_one_1
-      : Chained('multi') PathPart('')
+      : Chained('multi') 
       : Consumes('application/x-www-form-urlencoded')
       : Consumes('multipart/form-data')
       : Args(0)
@@ -31,7 +31,7 @@ sub start :Chained(/) PathPrefix CaptureArgs(0) { }
     }
 
     sub is_more_than_one_2
-      : Chained('multi') PathPart('')
+      : Chained('multi') 
       : Consumes('HTMLForm')
       : Args(0)
     {
@@ -39,7 +39,7 @@ sub start :Chained(/) PathPrefix CaptureArgs(0) { }
     }
 
     sub is_more_than_one_3
-      : Chained('multi') PathPart('')
+      : Chained('multi') 
       : Consumes('application/x-www-form-urlencoded,multipart/form-data')
       : Args(0)
     {