more comprehensive test for part_data v1.20
Gianni Ceccarelli [Wed, 21 Jan 2015 17:13:00 +0000 (17:13 +0000)]
t/10mixparamcontent.t

index 88a09a4..726fe0b 100644 (file)
@@ -3,6 +3,7 @@ use warnings;
 use strict;
 
 use Test::More;
+use Test::Deep;
 use HTTP::Body;
 use HTTP::Request::Common;
 use Encode;
@@ -11,8 +12,10 @@ use File::Spec::Functions;
 use File::Temp qw/ tempdir /;
 
 
-my $utf8 = 'test ♥';
-my $shiftjs = 'test テスト';
+my $string_for_utf8 = 'test ♥';
+my $string_in_utf8 = Encode::encode('UTF-8',$string_for_utf8);
+my $string_for_shiftjis = 'test テスト';
+my $string_in_shiftjis = Encode::encode('SHIFT_JIS',$string_for_shiftjis);
 my $path = File::Spec->catfile('t', 'utf8.txt');
 
 ok my $req = POST '/root/echo_arg',
@@ -22,15 +25,15 @@ ok my $req = POST '/root/echo_arg',
       arg1 => [
         undef, '',
         'Content-Type' =>'text/plain; charset=UTF-8',
-        'Content' => Encode::encode('UTF-8', $utf8)],
+        'Content' => $string_in_utf8, ],
       arg2 => [
         undef, '',
         'Content-Type' =>'text/plain; charset=SHIFT_JIS',
-        'Content' => Encode::encode('SHIFT_JIS', $shiftjs)],
+        'Content' => $string_in_shiftjis, ],
       arg2 => [
         undef, '',
         'Content-Type' =>'text/plain; charset=SHIFT_JIS',
-        'Content' => Encode::encode('SHIFT_JIS', $shiftjs)],
+        'Content' => $string_in_shiftjis, ],
       file => [
         "$path", Encode::encode_utf8('♥ttachment.txt'), 'Content-Type' =>'text/html; charset=UTF-8'
       ],
@@ -50,11 +53,53 @@ while ( $fh->read( my $buffer, 1024 ) ) {
 }
 
 is $body->param->{'arg0'}, 'helloworld';
-is Encode::decode('UTF-8', $body->param->{'arg1'}), $utf8;
-is Encode::decode('SHIFT_JIS', $body->param->{'arg2'}[0]), $shiftjs;
+is $body->param->{'arg1'}, $string_in_utf8;
+is $body->param->{'arg2'}[0], $string_in_shiftjis;
+is $body->param->{'arg2'}[1], $string_in_shiftjis;
 
-is $body->part_data->{'arg0'}->{data}, 'helloworld';
-is Encode::decode('UTF-8', $body->part_data->{'arg1'}->{data}), $utf8;
-is Encode::decode('SHIFT_JIS', $body->part_data->{'arg2'}[0]->{data}), $shiftjs;
+cmp_deeply(
+    $body->part_data->{'arg0'},
+    {
+        data => 'helloworld',
+        headers => {
+            'Content-Disposition' => re(qr{^form-data\b}),
+        },
+        done => 1,
+        name => 'arg0',
+        size => 10,
+    },
+    'arg0 part data correct',
+);
+cmp_deeply(
+    $body->part_data->{'arg1'},
+    {
+        data => $string_in_utf8,
+        headers => {
+            'Content-Disposition' => re(qr{^form-data\b}),
+            'Content-Type' => 'text/plain; charset=UTF-8',
+        },
+        done => 1,
+        name => 'arg1',
+        size => length($string_in_utf8),
+    },
+    'arg1 part data correct',
+);
+
+cmp_deeply(
+    $body->part_data->{'arg2'},
+    [
+        ({
+            data => $string_in_shiftjis,
+            headers => {
+                'Content-Disposition' => re(qr{^form-data\b}),
+                'Content-Type' => 'text/plain; charset=SHIFT_JIS',
+            },
+            done => 1,
+            name => 'arg2',
+            size => length($string_in_shiftjis),
+        }) x 2,
+    ],
+    'arg2 part data correct',
+);
 
 done_testing;